Submission #1159403

#TimeUsernameProblemLanguageResultExecution timeMemory
1159403domblyMutating DNA (IOI21_dna)C++20
100 / 100
37 ms8456 KiB
#include <bits/stdc++.h> #include "dna.h" using namespace std; const int N = 1e5 + 10; int pref[N][3][3],p[N][3][2]; int Code(char x) { if(x == 'A') return 0; if(x == 'C') return 1; if(x == 'T') return 2; } void init(string a, string b) { int n = (int)a.size(); for(int i = 0; i < n; i++) { for(int j = 0; j < 3; j++) { int coef = (i > 0 ? p[i - 1][j][0] : 0); p[i][j][0] = coef + (Code(a[i]) == j); coef = (i > 0 ? p[i - 1][j][1] : 0); p[i][j][1] = coef + (Code(b[i]) == j); } for(int j = 0; j < 3; j++) { for(int k = 0; k < 3; k++) { int c = (i > 0 ? pref[i - 1][j][k] : 0); pref[i][j][k] = c + (Code(a[i]) == j && Code(b[i]) == k); } } } } bool Get(int l,int r,int f) { int L = (l > 0 ? p[l - 1][f][0] : 0); int L2 = (l > 0 ? p[l - 1][f][1] : 0); return (p[r][f][0] - L == p[r][f][1] - L2); } int get_distance(int x, int y) { for(int i = 0; i < 3; i++) if(!Get(x,y,i)) return -1; int ans = 0; vector<vector<int>> a(3,vector<int>(3)); for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { a[i][j] = pref[y][i][j] - (x > 0 ? pref[x - 1][i][j] : 0); } } int g = 0; for(int i = 0; i < 3; i++) { for(int j = i + 1; j < 3; j++) { int mn = min(a[i][j],a[j][i]); ans += mn; a[i][j] -= mn; a[j][i] -= mn; g += a[i][j] + a[j][i]; } } int f = 1e9; for(int i = 0; i < 3; i++) { int sum = 0; for(int j = 0; j < 3; j++) if(i != j) sum += a[j][i]; f = min(f,sum + (g - sum ) / 2); } return ans + f; } /* 6 3 ATACAT ACTATA 1 3 4 5 3 5 2 1 -1 */

Compilation message (stderr)

dna.cpp: In function 'int Code(char)':
dna.cpp:14:1: warning: control reaches end of non-void function [-Wreturn-type]
   14 | }
      | ^
#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...