Submission #607562

#TimeUsernameProblemLanguageResultExecution timeMemory
607562jairRSMutating DNA (IOI21_dna)C++17
21 / 100
1588 ms4804 KiB
#include "dna.h" #include <bits/stdc++.h> using namespace std; using vi = vector<int>; string ga, gb; map<char, vi> prefixCharA; map<char, vi> prefixCharB; char characters[3] = {'A', 'T', 'C'}; void init(string a, string b) { int n = a.size(); ga = ' ' + a; gb = ' ' + b; for (char c : characters) { prefixCharA[c] = prefixCharB[c] = vi(n + 1, 0); for (int i = 1; i <= n; i++) { prefixCharA[c][i] = (ga[i] == c) + prefixCharA[c][i - 1]; prefixCharB[c][i] = (gb[i] == c) + prefixCharB[c][i - 1]; } } } int swapDistance(string &a, string b) { if (a == b) return 0; int res = 1e9 + 1; for (int i = 0; i < b.size(); i++) for (int j = i + 1; j < b.size(); j++) { if (b[i] == b[j] || a[i] == b[i] || a[j] == b[j]) continue; swap(b[i], b[j]); res = min(res, swapDistance(a, b) + 1); swap(b[i], b[j]); } return res; } int get_distance(int x, int y) { x++, y++; bool pos = true; for (char c : characters) { int countInA = prefixCharA[c][y] - prefixCharA[c][x - 1]; int countInB = prefixCharB[c][y] - prefixCharB[c][x - 1]; pos &= (countInA == countInB); } if (!pos) return -1; string s1 = string(ga.begin() + x, ga.begin() + y + 1); string s2 = string(gb.begin() + x, gb.begin() + y + 1); return swapDistance(s1, s2); }

Compilation message (stderr)

dna.cpp: In function 'int swapDistance(std::string&, std::string)':
dna.cpp:33:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |  for (int i = 0; i < b.size(); i++)
      |                  ~~^~~~~~~~~~
dna.cpp:34:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   34 |   for (int j = i + 1; j < b.size(); j++)
      |                       ~~^~~~~~~~~~
#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...