Official
B - Takahashi's Failure Editorial by mechanicalpenciI
条件は「食品 \(B_1, B_2, \ldots, B_K\) の中に、美味しさが \(N\) 個の食品の中で最大(同率 \(1\) 位でも良い)であるようなものが存在するか?」と言い換えることができます。
これは、例えば次のようにして判定することができます。
- \(N\) 個の食品の美味しさの最大値を求める。(これを \(M\) とする。)
- \(j=1,2,\ldots , K\) について、\(A_{B_j}=M\) であるかを調べる。
- そのような \(j\) が \(1\) つでも存在すれば
Yes
であり、存在しなければNo
となる。
これは for 文と if 文を用いて書くことができます。
添字の範囲に注意してください。
また、Yes
を複数回出力したり、Yes
の後に No
を出力することが無いように注意してください。
c++による実装例:
#include <bits/stdc++.h>
using namespace std;
int main(void) {
int n, k, m;
int a[100], b[100];
cin >> n >> k;
for (int i = 0; i < n; i++)cin >> a[i];
for (int i = 0; i < k; i++)cin >> b[i];
m = -1;
for (int i = 0; i < n; i++)m = max(m, a[i]);
for (int i = 0; i < k; i++) {
if (a[b[i] - 1] == m) {
cout << "Yes" << endl;
return 0;
}
}
cout << "No" << endl;
return 0;
}
Pythonによる実装例:
n,k= map(int, input().split())
a= list(map(int, input().split()))
b= list(map(int, input().split()))
m=max(a)
flag=False
for i in range(k):
if a[b[i]-1]==m:
flag=True
if flag:
print("Yes")
else:
print("No")
posted:
last update: