Submission #1291714

#TimeUsernameProblemLanguageResultExecution timeMemory
1291714HoriaHaivasGenetics (BOI18_genetics)C++20
100 / 100
259 ms20532 KiB
#include<bits/stdc++.h> #define debug(x) cerr << #x << " " << x << "\n" #define debugs(x) cerr << #x << " " << x << " " #pragma GCC optimize("Ofast") #define int long long using namespace std; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); int range_rng(int l, int r) { return uniform_int_distribution<int>(l,r)(rng); } map<int,int> taken; string s[4505]; int rndval[4505]; int coef[4505]; int sum[4][4505]; int sumhash[4][4505]; const int mod=1e9+7; signed main() { /* ifstream fin("arbore.in"); ofstream fout("arbore.out"); */ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,m,k,i,j,kek,totalsum,hashsum,normalsum,is; cin >> n >> m >> k; totalsum=0; for (i=1; i<=n; i++) { do { kek=range_rng(1,1e9); } while (taken[kek]); taken[kek]=1; rndval[i]=kek; cin >> s[i]; for (j=0; j<s[i].size(); j++) { if (s[i][j]=='A') { sum[0][j+1]++; sumhash[0][j+1]+=rndval[i]; } if (s[i][j]=='C') { sum[1][j+1]++; sumhash[1][j+1]+=rndval[i]; } if (s[i][j]=='G') { sum[2][j+1]++; sumhash[2][j+1]+=rndval[i]; } if (s[i][j]=='T') { sum[3][j+1]++; sumhash[3][j+1]+=rndval[i]; } } totalsum+=rndval[i]*k; } for (i=1;i<=n;i++) { hashsum=0; normalsum=0; for (j=0;j<s[i].size();j++) { if (s[i][j]=='A') { normalsum+=sum[1][j+1]; hashsum+=sumhash[1][j+1]; normalsum+=sum[2][j+1]; hashsum+=sumhash[2][j+1]; normalsum+=sum[3][j+1]; hashsum+=sumhash[3][j+1]; } if (s[i][j]=='C') { normalsum+=sum[0][j+1]; hashsum+=sumhash[0][j+1]; normalsum+=sum[2][j+1]; hashsum+=sumhash[2][j+1]; normalsum+=sum[3][j+1]; hashsum+=sumhash[3][j+1]; } if (s[i][j]=='G') { normalsum+=sum[0][j+1]; hashsum+=sumhash[0][j+1]; normalsum+=sum[1][j+1]; hashsum+=sumhash[1][j+1]; normalsum+=sum[3][j+1]; hashsum+=sumhash[3][j+1]; } if (s[i][j]=='T') { normalsum+=sum[0][j+1]; hashsum+=sumhash[0][j+1]; normalsum+=sum[1][j+1]; hashsum+=sumhash[1][j+1]; normalsum+=sum[2][j+1]; hashsum+=sumhash[2][j+1]; } } if (normalsum==(n-1)*k && hashsum==(totalsum-rndval[i]*k)) { is=i; break; } } cout << is; 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...