제출 #996757

#제출 시각아이디문제언어결과실행 시간메모리
996757overwatch9DNA 돌연변이 (IOI21_dna)C++17
0 / 100
34 ms2388 KiB
#include "dna.h" #include <bits/stdc++.h> using namespace std; using ll = long long; string A, B; void init(std::string a, std::string b) { A = a; B = b; } int get_distance(int x, int y) { string a = A.substr(x, y - x + 1); string b = B.substr(x, y - x + 1); sort(a.begin(), a.end()); sort(b.begin(), b.end()); if (a != b) return -1; a = A.substr(x, y - x + 1); b = B.substr(x, y - x + 1); vector <set <int>> pos(26); for (int i = 0; i < y - x + 1; i++) { pos[b[i] - 'A'].insert(i); } ll ans = 0; for (int i = 0; i < y - x + 1; i++) { int j = *pos[a[i] - 'A'].begin(); ans += abs(j - i); pos[b[i] - 'A'].erase(pos[b[i] - 'A'].begin()); if (i != j) pos[b[j] - 'A'].erase(pos[b[j] - 'A'].begin()); if (i != j) pos[b[i] - 'A'].insert(j); swap(b[i], b[j]); } return ans; }
#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...