Submission #856433

#TimeUsernameProblemLanguageResultExecution timeMemory
856433andrei_boacaMutating DNA (IOI21_dna)C++17
100 / 100
36 ms10264 KiB
#include "dna.h" #include <bits/stdc++.h> //#include "grader.cpp" using namespace std; int s[100005][4][4],cnt[4][4],nr[4]; int n; int toint(char c) { if(c=='A') return 1; if(c=='C') return 2; if(c=='T') return 3; } void init(std::string a, std::string b) { n=a.size(); for(int i=1;i<=n;i++) { for(int j=1;j<=3;j++) for(int k=1;k<=3;k++) s[i][j][k]=s[i-1][j][k]; int x=toint(a[i-1]); int y=toint(b[i-1]); s[i][x][y]++; } } int get_distance(int x, int y) { x++; y++; nr[1]=nr[2]=0; nr[3]=0; int ans=0; for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) { cnt[i][j]=s[y][i][j]-s[x-1][i][j]; if(i!=j) ans+=cnt[i][j]; nr[i]+=cnt[i][j]; nr[j]-=cnt[i][j]; } for(int i=1;i<=3;i++) if(nr[i]!=0) return -1; for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) if(i!=j) { int val=min(cnt[i][j],cnt[j][i]); ans-=val; cnt[i][j]-=val; cnt[j][i]-=val; } int t=min(min(cnt[1][2],cnt[2][3]),cnt[3][1]); ans-=t; cnt[1][2]-=t; cnt[2][3]-=t; cnt[3][1]-=t; t=min(min(cnt[1][3],cnt[2][1]),cnt[3][2]); ans-=t; cnt[1][3]-=t; cnt[2][1]-=t; cnt[3][2]-=t; return ans; }

Compilation message (stderr)

dna.cpp: In function 'int toint(char)':
dna.cpp:18:1: warning: control reaches end of non-void function [-Wreturn-type]
   18 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...