제출 #667746

#제출 시각아이디문제언어결과실행 시간메모리
667746Darren0724Genetics (BOI18_genetics)C++17
46 / 100
2020 ms59572 KiB
//#pragma GCC optimize("Ofast,unroll-loops") //#pragma GCC target("avx2") #include<bits/stdc++.h> #define all(x) x.begin(),x.begin() using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int n,m,k;cin>>n>>m>>k; vector<vector<bitset<4100>>> v(n,vector<bitset<4100>>(4)); vector<vector<int>> ans(n,vector<int>(n,-1)); for(int i=0;i<n;i++){ string s;cin>>s; for(int j=0;j<m;j++){ if(s[j]=='A'){ v[i][0][j]=1; } if(s[j]=='T'){ v[i][1][j]=1; } if(s[j]=='C'){ v[i][2][j]=1; } if(s[j]=='G'){ v[i][3][j]=1; } } } vector<bool> vis(n); vector<int> a(n),b(n); for(int i=0;i<n;i++){ a[i]=i; b[i]=i; } random_shuffle(all(a)); random_shuffle(all(b)); for(int i=0;i<n;i++){ ans[a[i]][a[i]]=k; if(vis[a[i]]){ continue; } for(int j=0;j<n;j++){ if(a[i]==b[j]){ continue; } if(ans[a[i]][b[j]]!=-1){ continue; } ans[a[i]][b[j]]=0; for(int k=0;k<4;k++){ ans[a[i]][b[j]]+=(v[a[i]][k]&v[b[j]][k]).count(); } ans[a[i]][b[j]]=m-ans[a[i]][b[j]]; ans[b[j]][a[i]]=ans[a[i]][b[j]]; if(ans[a[i]][b[j]]!=k){ vis[a[i]]=1; vis[b[j]]=1; break; } } } for(int i=0;i<n;i++){ bool flag=1; for(int j=0;j<n;j++){ if(ans[i][j]!=k){ flag=0; } } if(flag){ cout<<i+1<<endl; break; } } 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...