Submission #1093673

#TimeUsernameProblemLanguageResultExecution timeMemory
1093673vjudge1Genetics (BOI18_genetics)C++17
100 / 100
785 ms33360 KiB
#include<bits/stdc++.h> using namespace std; #define int long long mt19937_64 rng(chrono::high_resolution_clock::now().time_since_epoch().count()); int GetRand(int l,int r){ return (rng()%(r-l+1))+l; } signed main(){ int n,m,k; cin >> n >> m >> k; char grid[n][m]; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin >> grid[i][j]; } } int val[n]; int pre[m][4]; int sum=0; memset(pre,0,sizeof(pre)); for(int i=0;i<n;i++){ val[i]=GetRand(1,1e12); sum+=val[i]; } for(int j=0;j<m;j++){ for(int i=0;i<n;i++){ if(grid[i][j]=='A'){ pre[j][0]+=val[i]; } else if(grid[i][j]=='C'){ pre[j][1]+=val[i]; } else if(grid[i][j]=='G'){ pre[j][2]+=val[i]; } else{ pre[j][3]+=val[i]; } } } for(int i=0;i<n;i++){ int curr=0; for(int j=0;j<m;j++){ curr+=sum; if(grid[i][j]=='A'){ curr-=pre[j][0]; } else if(grid[i][j]=='C'){ curr-=pre[j][1]; } else if(grid[i][j]=='G'){ curr-=pre[j][2]; } else{ curr-=pre[j][3]; } } if(curr==(sum-val[i])*k){ cout << i+1; break; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...