Submission #1216119

#TimeUsernameProblemLanguageResultExecution timeMemory
1216119thelegendary08Mutating DNA (IOI21_dna)C++17
100 / 100
89 ms9032 KiB
#include "dna.h" #include<bits/stdc++.h> #define pb push_back #define mp make_pair #define vi vector<int> #define f0r(i,n) for(int i = 0; i<n; i++) #define FOR(i, k, n) for(int i = k; i<n; i++) #define pii pair<int,int> #define vvi vector<vector<int>> #define vb vector<bool> #define vpii vector<pair<int,int>> #define vout(v) for(auto u : v)cout<<u<<' '; cout<<endl; #define dout(x) cout<<x<<' '<<#x<<endl; #define dout2(x,y) cout<<x<<' '<<#x<<' '<<y<<' '<<#y<<endl; using namespace std; vvi ps; int n; vi a; vi b; void init(std::string A, std::string B) { n = A.size(); a.resize(n); b.resize(n); f0r(i,n){ if(A[i] == 'A')a[i] = 0; else if(A[i] == 'C')a[i] = 1; else a[i] = 2; if(B[i] == 'A')b[i] = 0; else if(B[i] == 'C')b[i] = 1; else b[i] = 2; } ps.resize(n + 1); f0r(i,n+1)ps[i].resize(6); FOR(i, 1, n+1){ ps[i][0] = ps[i-1][0] + (a[i-1] == 0 && b[i-1] == 1); ps[i][1] = ps[i-1][1] + (a[i-1] == 1 && b[i-1] == 0); ps[i][2] = ps[i-1][2] + (a[i-1] == 0 && b[i-1] == 2); ps[i][3] = ps[i-1][3] + (a[i-1] == 2 && b[i-1] == 0); ps[i][4] = ps[i-1][4] + (a[i-1] == 1 && b[i-1] == 2); ps[i][5] = ps[i-1][5] + (a[i-1] == 2 && b[i-1] == 1); } /* f0r(i,6){ f0r(j, n+1)cout<<ps[j][i]<<' '; cout<<'\n'; } */ } int get_distance(int x, int y) { vi v(6); f0r(i,6){ v[i] = ps[y+1][i] - ps[x][i]; } // vout(v); if(v[0] + v[5] != v[1] + v[4])return -1; if(v[1] + v[3] != v[0] + v[2])return -1; if(v[2] + v[4] != v[3] + v[5])return -1; return min(v[0], v[1]) + min(v[2], v[3]) + min(v[4], v[5]) + 2 * (max(v[0],v[1]) - min(v[0],v[1])); }
#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...