Submission #966782

#TimeUsernameProblemLanguageResultExecution timeMemory
966782SuPythonyDNA 돌연변이 (IOI21_dna)C++17
56 / 100
33 ms5588 KiB
#include "dna.h"
#include <bits/stdc++.h>
using namespace std;

vector<int> pf(1e5+1,0);
vector<vector<int>> pf2(3, vector<int>(1e5+1,0));
vector<vector<int>> pf3(3, vector<int>(1e5+1,0));

void init(string a, string b) {
    for (int i=1; i<=a.size(); i++) {
        if (a[i-1]!=b[i-1]) {
            pf[i]=pf[i-1]+1;
        } else {
            pf[i]=pf[i-1];
        }
    }
    for (int i=1; i<=a.size(); i++) {
        if (a[i-1]=='A'&&a[i-1]!=b[i-1]) pf2[0][i]=pf2[0][i-1]+1;
        else pf2[0][i]=pf2[0][i-1];
        if (a[i-1]=='C'&&a[i-1]!=b[i-1]) pf2[1][i]=pf2[1][i-1]+1;
        else pf2[1][i]=pf2[1][i-1];
        if (a[i-1]=='T'&&a[i-1]!=b[i-1]) pf2[2][i]=pf2[2][i-1]+1;
        else pf2[2][i]=pf2[2][i-1];
    }
    for (int i=1; i<=a.size(); i++) {
        if (b[i-1]=='A'&&a[i-1]!=b[i-1]) pf3[0][i]=pf3[0][i-1]+1;
        else pf3[0][i]=pf3[0][i-1];
        if (b[i-1]=='C'&&a[i-1]!=b[i-1]) pf3[1][i]=pf3[1][i-1]+1;
        else pf3[1][i]=pf3[1][i-1];
        if (b[i-1]=='T'&&a[i-1]!=b[i-1]) pf3[2][i]=pf3[2][i-1]+1;
        else pf3[2][i]=pf3[2][i-1];
    }
}

int get_distance(int x, int y) {
    x++; y++;
    if ((pf2[0][y]-pf2[0][x-1])!=(pf3[0][y]-pf3[0][x-1])||(pf2[1][y]-pf2[1][x-1])!=(pf3[1][y]-pf3[1][x-1])||(pf2[2][y]-pf2[2][x-1])!=(pf3[2][y]-pf3[2][x-1])) return -1;
    int c=pf[y]-pf[x-1];
    return c/2+c%2;
}

Compilation message (stderr)

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