Official
B - Same Name Editorial by penguinman
\(N\) の制約が \(1000\) 以下と小さいので、\(1 \leq i \lt j \leq N\) を満たすすべての整数対 \((i,j)\) について問題文中の条件を満たすか、すなわち \(S_i=S_j\) かつ \(T_i=T_j\) となっているかを判定すればよいです。
計算量は \(S_i\) の長さの総和を \(X\)、\(T_i\) の長さの総和を \(Y\) として \(O(N(X+Y))\) となります。
実装例 (C++)
#include<bits/stdc++.h>
using namespace std;
int main(){
int N; cin >> N;
vector<string> S(N),T(N);
string ans = "No";
for(int i=0; i<N; i++){
cin >> S[i] >> T[i];
for(int j=0; j<i; j++){
if(S[i]==S[j] && T[i]==T[j]) ans = "Yes";
}
}
cout << ans << endl;
}
実装例 (Python)
N = int(input())
S = ['']*N
T = ['']*N
for i in range(N):
S[i],T[i] = map(str,input().split())
ans = 'No'
for i in range(N):
for j in range(i+1,N):
if S[i]==S[j] and T[i]==T[j]:
ans = 'Yes'
print(ans)
posted:
last update: