제출 #240563

#제출 시각아이디문제언어결과실행 시간메모리
240563dsjongGenetics (BOI18_genetics)C++14
0 / 100
65 ms16504 KiB
#include <bits/stdc++.h> using namespace std; int n, m, k; int diff[5000][5000], cnt[5000]; char a[5000][5000]; bool check(int x){ bool b=true; for(int i=1;i<=n;i++){ if(i==x) continue; int cnt=0; for(int j=1;j<=m;j++){ if(a[x][j]!=a[i][j]) cnt++; } diff[x][i]=diff[i][x]=cnt; if(cnt!=k) b=false; } return b; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin>>n>>m>>k; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>a[i][j]; } } if(n<=1){ for(int i=1;i<=n;i++){ if(check(i)){ cout<<i; return 0; } } } if(check(1)){ cout<<1; return 0; } int x; for(int i=2;i<=n;i++){ //cout<<diff[i][1]<<" "<<diff[1][i]<<endl; if(diff[1][i]==k){ if(check(i)){ cout<<i; return 0; } else{ x=i; break; } } } for(int j=1;j<=m;j++){ if(a[1][j]=='A') cnt[j]++; if(a[x][j]=='A') cnt[j]++; } vector<int>v; v.push_back(1); v.push_back(x); for(int i=1;i<=n;i++){ if(i==1 || i==x) continue; if(diff[i][1]==k && diff[i][x]==k){ v.push_back(i); for(int j=1;j<=m;j++){ if(a[i][j]=='A') cnt[j]++; } } } for(int i=1;i<=m;i++){ if(cnt[i]==1){ for(int j:v){ if(a[j][i]=='A'){ cout<<j; return 0; } } } else if(cnt[i]==(int)v.size()-1){ for(int j:v){ if(a[j][i]=='C'){ cout<<j; return 0; } } } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...