Submission #1212320

#TimeUsernameProblemLanguageResultExecution timeMemory
1212320StefanSebezGenetics (BOI18_genetics)C++20
100 / 100
458 ms97500 KiB
#include <bits/stdc++.h> using namespace std; #define fi first #define se second #define pb push_back #define ll long long #define ld long double #pragma GCC target("popcnt") const int N=4110; mt19937 rng(time(0)); int n,m,K; string s[N]; int a[N][N]; bool was[N],boja[N]; int broj; int cnt[2][4][N]; void Solve(){ int num[2]={0}; for(int k=0;k<=1;k++) for(int i=0;i<=3;i++) for(int j=0;j<m;j++) cnt[k][i][j]=0; for(int i=0;i<n;i++){ boja[i]=rng()%2; num[boja[i]]++; for(int j=0;j<m;j++) cnt[boja[i]][a[i][j]][j]++; } for(int i=0;i<n;i++){ if(was[i]) continue; int x[2]={0}; for(int j=0;j<m;j++){ for(int k=0;k<=1;k++) x[k]+=num[k]-cnt[k][a[i][j]][j]; } num[boja[i]]--; if(x[0]!=num[0]*K||x[1]!=num[1]*K) was[i]=true,broj--; num[boja[i]]++; } } int main(){ scanf("%i%i%i",&n,&m,&K); for(int i=0;i<n;i++) cin>>s[i]; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(s[i][j]=='A') a[i][j]=0; if(s[i][j]=='C') a[i][j]=1; if(s[i][j]=='G') a[i][j]=2; if(s[i][j]=='T') a[i][j]=3; } } broj=n; while(broj>1) Solve(); int res=0; for(int i=0;i<n;i++) if(!was[i]) res=i; res++; printf("%i\n",res); return 0; }

Compilation message (stderr)

genetics.cpp: In function 'int main()':
genetics.cpp:37:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   37 |     scanf("%i%i%i",&n,&m,&K);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...