Submission #439296

#TimeUsernameProblemLanguageResultExecution timeMemory
439296Waratpp123Mutating DNA (IOI21_dna)C++17
100 / 100
51 ms8148 KiB
#include "dna.h" #include <bits/stdc++.h> using namespace std; int cnta[100010],cntc[100010],cntt[100010],cnta2[100010],cntc2[100010],cntt2[100010]; int cntat[100010],cntta[100010],cnttc[100010],cntct[100010],cntac[100010],cntca[100010]; void init(string a, string b) { int n,i; n=a.size(); for(i=0;i<n;i++){ if(a[i]=='A') cnta[i+1]++; else if(a[i]=='C') cntc[i+1]++; else cntt[i+1]++; if(b[i]=='A') cnta2[i+1]++; else if(b[i]=='C') cntc2[i+1]++; else cntt2[i+1]++; cnta[i+1]+=cnta[i]; cntc[i+1]+=cntc[i]; cntt[i+1]+=cntt[i]; cnta2[i+1]+=cnta2[i]; cntc2[i+1]+=cntc2[i]; cntt2[i+1]+=cntt2[i]; } for(i=0;i<n;i++){ if(a[i]=='A'&&b[i]=='C') cntac[i+1]++; else if(a[i]=='A'&&b[i]=='T') cntat[i+1]++; else if(a[i]=='C'&&b[i]=='A') cntca[i+1]++; else if(a[i]=='C'&&b[i]=='T') cntct[i+1]++; else if(a[i]=='T'&&b[i]=='A') cntta[i+1]++; else if(a[i]=='T'&&b[i]=='C') cnttc[i+1]++; cntac[i+1]+=cntac[i]; cntct[i+1]+=cntct[i]; cntta[i+1]+=cntta[i]; cntat[i+1]+=cntat[i]; cntca[i+1]+=cntca[i]; cnttc[i+1]+=cnttc[i]; } } int get_distance(int x, int y) { x++,y++; int l,r; if(cnta[y]-cnta[x-1]!=cnta2[y]-cnta2[x-1]) return -1; if(cntc[y]-cntc[x-1]!=cntc2[y]-cntc2[x-1]) return -1; if(cntt[y]-cntt[x-1]!=cntt2[y]-cntt2[x-1]) return -1; return min(cntat[y]-cntat[x-1],cntta[y]-cntta[x-1])+ min(cntac[y]-cntac[x-1],cntca[y]-cntca[x-1])+ min(cntct[y]-cntct[x-1],cnttc[y]-cnttc[x-1])+ 2*(max(cntat[y]-cntat[x-1],cntta[y]-cntta[x-1])- min(cntat[y]-cntat[x-1],cntta[y]-cntta[x-1])); } /* 6 3 ATACAT ACTATA 1 3 4 5 3 5 */

Compilation message (stderr)

dna.cpp: In function 'int get_distance(int, int)':
dna.cpp:41:9: warning: unused variable 'l' [-Wunused-variable]
   41 |     int l,r;
      |         ^
dna.cpp:41:11: warning: unused variable 'r' [-Wunused-variable]
   41 |     int l,r;
      |           ^
#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...