Submission #1197349

#TimeUsernameProblemLanguageResultExecution timeMemory
1197349AMel0nMutating DNA (IOI21_dna)C++20
0 / 100
425 ms8968 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
#define FOR(i,N) for(ll i = 0; i < N; i++)
#define all(x) (x).begin(), (x).end()
#define F first 
#define S seconds

int n;
vector<vector<int>> ps;
void init(string a, string b) {
    n = a.size();
    ps.resize(n+1, vector<int>(6));
    for(int i = 1; i <= n; i++) {
        for(int k = 0; k < 6; k++) ps[i][k] = ps[i-1][k];

        if (a[i-1] == 'A' && b[i-1] == 'C') ps[i][0]++;
        if (a[i-1] == 'C' && b[i-1] == 'A') ps[i][1]++;
        if (a[i-1] == 'A' && b[i-1] == 'T') ps[i][2]++;
        if (a[i-1] == 'T' && b[i-1] == 'A') ps[i][3]++;
        if (a[i-1] == 'C' && b[i-1] == 'T') ps[i][4]++;
        if (a[i-1] == 'T' && b[i-1] == 'C') ps[i][5]++;
    }
}


int get_distance(int x, int y) {
    vector<int> range;
    for(int k = 0; k < 6; k++) {range.push_back(ps[y+1][k] - ps[x][k]); cout << range[k] << endl;}

    int sigma = min(range[0], range[1]) + min(range[2], range[3]) + min(range[4], range[5]); 
    int skibidi = max(range[0], range[1]) - min(range[0], range[1]) + max(range[2], range[3]) - min(range[2], range[3]) + max(range[4], range[5]) - min(range[4], range[5]);

    if (range[0] + range[2] != range[1] + range[3] || range[1] + range[4] != range[0] + range[5] || range[3] + range[5] != range[2] + range[4]) return -1; 

    return sigma + (skibidi * 2) / 3;
}

// signed main() {
//     cin.tie(0); ios::sync_with_stdio(false);
// }
#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...