Submission #438930

#TimeUsernameProblemLanguageResultExecution timeMemory
438930Maurimuri80Mutating DNA (IOI21_dna)C++17
21 / 100
39 ms3140 KiB
#include "dna.h" #include <iostream> #include <vector> using namespace std; string A,B; vector<int> AT; vector<int> acum; void init(std::string a, std::string b) { A = a; B = b; AT.assign(a.size(),0); acum.assign(a.size(),0); if (A[0] == B[0]) acum[0] = 1; for (int i = 1; i < a.size(); i++) { if (A[i] == B[i]) { AT[i] = 1; } acum[i] = acum[i-1]+AT[i]; } } int get_distance(int x, int y) { int Amo[3] = {0,0,0}; int Amo2[3] = {0,0,0}; for (int i = x; i <= y; i++) { if (A[i] == 'T') Amo[0]++; if (A[i] == 'A') Amo[1]++; if (A[i] == 'C') Amo[2]++; if (B[i] == 'T') Amo2[0]++; if (B[i] == 'A') Amo2[1]++; if (B[i] == 'C') Amo2[2]++; } if ((y-x) <= 2) { if (Amo[0] == Amo2[0] && Amo[1] == Amo2[1] && Amo[2] == Amo2[2]) { if ((y-x) == 0){ return 0; } if ((y-x) == 1) { if (A[x] == B[x]) return 0; return 1; } if (A[x] == B[x] && A[x+1] == B[x+1]) { return 0; } if (A[x] == B[x] || A[x+1] == B[x+1] || A[y] == B[y]) { return 1; } return 2; }else { return -1; } } if (Amo[2] == Amo2[2] && Amo[2] == 0 && Amo[0] == Amo2[0] && Amo[1] == Amo2[1]) { int dif; if (x == 0) { dif = ((y-x)+1) - (acum[y]); }else { dif = ((y-x)+1) - (acum[y]-acum[x-1]); } return dif/2; } return 0; }

Compilation message (stderr)

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