Submission #1237675

#TimeUsernameProblemLanguageResultExecution timeMemory
1237675JelaByteEngineerDNA 돌연변이 (IOI21_dna)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const int MAXN=1e5; int prefa[MAXN][3], prefb[MAXN][3]; int dp[MAXN][3][3]; int cd (char c) { if (c=='A') return 0; else if (c=='T') return 1; else return 2; } void init (string a, string b) { int n=a.size(); for (int i=0; i<n; i++) { prefa[i][0]=(i>0? prefa[i-1][0]:0); prefa[i][1]=(i>0? prefa[i-1][1]:0); prefa[i][2]=(i>0? prefa[i-1][2]:0); prefa[i][cd(a[i])]++; prefb[i][0]=(i>0? prefb[i-1][0]:0); prefb[i][1]=(i>0? prefb[i-1][1]:0); prefb[i][2]=(i>0? prefb[i-1][2]:0); prefb[i][cd(b[i])]++; } for (int i=0; i<n; i++) { dp[i][cd(a[i])][cd(b[i])]=(i>0? dp[i-1][cd(a[i])][cd(b[i])]:0)+1; for (int j=0; j<3; j++) { for (int k=0; k<3; k++) { if (j!=cd(a[i]) || k!=cd(b[i])) dp[i][j][k]=(i>0? dp[i-1][j][k]:0); } } }/* for (int i=0; i<n; i++) { cout<<"i je: "<<i<<endl; for (int j=0; j<3; j++) { for (int k=0; k<3; k++) { cout<<"j i k su: "<<j<<" "<<k<<" "<<dp[i][j][k]<<endl; } } }*/ } int get_distance (int x, int y) { if (prefa[y][0]-(x>0? prefa[x-1][0]:0)!=prefb[y][0]-(x>0? prefb[x-1][0]:0) || prefa[y][1]-(x>0? prefa[x-1][1]:0)!=prefb[y][1]-(x>0? prefb[x-1][1]:0) || prefa[y][2]-(x>0? prefa[x-1][2]:0)!=prefb[y][2]-(x>0? prefb[x-1][2]:0 )) return -1; int dp1[3][3]; int ans=0; for (int i=0; i<3; i++) { for (int j=i+1; j<3; j++) { //cout<<"i i j su: "<<i<<" "<<j<<endl; int minmin=min(dp[y][i][j]-(x>0? dp[x-1][i][j]:0), dp[y][j][i]-(x>0? dp[x-1][j][i]:0)); /*cout<<"minmin je: "<<minmin<<endl; cout<<"dp i dp su: "<<dp[y][i][j]-(x>0? dp[x-1][i][j]:0)<<" "<<dp[y][j][i]-(x>0? dp[x-1][j][i]:0)<<endl;*/ ans+=minmin; dp1[i][j]=dp[y][i][j]-(x>0? dp[x-1][i][j]:0)-minmin; dp1[j][i]=dp[y][j][i]-(x>0? dp[x-1][j][i]:0)-minmin; //cout<<"novi dp1 i dp1 su: "<<dp1[i][j]<<" "<<dp1[j][i]<<endl; } } vector <vector <int>> perm(6); perm[0]={0, 1, 2}; perm[1]={0, 2, 1}; perm[2]={1, 0, 2}; perm[3]={1, 2, 0}; perm[4]={2, 0, 1}; perm[5]={2, 1, 0}; for (int i=0; i<6; i++) { int x1=perm[i][0], y1=perm[i][1], z1=perm[i][2]; int minmin=min({dp1[x1][y1], dp1[y1][z1], dp1[z1][x1]}); ans+=2*minmin; dp1[x1][y1]-=minmin; dp1[y1][z1]-=minmin; dp1[z1][x1]-=minmin; } return ans; } int main() { ios::sync_with_stdio(false); cin.tie(0); int n, q; cin>>n>>q; string a, b; cin>>a>>b; init(a, b); while (q--) { int x, y; cin>>x>>y; cout<<get_distance(x, y)<<endl; } return 0; }

Compilation message (stderr)

/usr/bin/ld: /tmp/ccI39soj.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccRtx2On.o:dna.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status