제출 #1195690

#제출 시각아이디문제언어결과실행 시간메모리
1195690NonozeDNA 돌연변이 (IOI21_dna)C++20
0 / 100
31 ms13444 KiB
#include "dna.h" #include <bits/stdc++.h> using namespace std; int is(char c) { if (c=='A') return 0; else if (c=='C') return 1; return 2; } vector<vector<int>> prefa, prefb; vector<int> diff; void init(string a, string b) { prefa.push_back({0, 0, 0}), prefb.push_back({0, 0, 0}), diff.push_back(0); for (int i=0; i<(int)a.size(); i++) { prefa.push_back(prefa.back()), prefb.push_back(prefb.back()), diff.push_back(diff.back()); prefa.back()[is(a[i])]++, prefb.back()[is(b[i])]++, diff.back()+=a[i]!=b[i]; } } int get_distance(int x, int y) { int nba=prefa[y+1][0]-prefa[x][0], nbb=prefa[y+1][1]-prefa[x][1], nbc=prefa[y+1][2]-prefa[x][2]; if (nba!=prefb[y+1][0]-prefb[x][0] || nbb!=prefb[y+1][1]-prefb[x][1] || nbc!=prefb[y+1][2]-prefb[x][2]) return -1; return max({nba, nbb, nbc, (diff[y+1]-diff[x]+1)/2}); }
#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...