Submission #1312281

#TimeUsernameProblemLanguageResultExecution timeMemory
1312281opeleklanosMutating DNA (IOI21_dna)C++20
35 / 100
23 ms4144 KiB
#include <iostream>
#include <vector>
#include "dna.h"
using namespace std;

string a;
string b;

#define C first
#define A second.first
#define T second.second

vector<int> same;
vector<int> t1;
vector<int> t2;

void init(string a1, string b1){
    a = a1;
    b = b1;
    int n = a.size();
    same.assign(n, 0);
    t1.assign(n, 0);
    t2.assign(n, 0);

    for(int i = 0; i<n; i++){
        same[i] = (i>0?same[i-1]:0) + (int)(a[i] == b[i]);
        t1[i] = (i>0?t1[i-1]:0) + (int)(a[i] == 'T');
        t2[i] = (i>0?t2[i-1]:0) + (int)(b[i] == 'T');
    }
}

int get_distance(int l, int r){
    if((t1[r] - (l>0?t1[l-1]:0))!= (t2[r] - (l>0?t2[l-1]:0))) return -1;
    // if(((r-l+1) - (same[r+1] - same[l]))%2) return -17;
    return ((r-l+1) - (same[r] - (l>0?same[l]:0))) /2;
}

// int main(void){
//     freopen("input.txt", "r", stdin);
//     string a1, b1; 
//     int q;
//     cin>>a1>>b1>>q;
//     init(a1, b1);
//     for(int i = 0; i<q; i++){
//         int l, r; cin>>l>>r;
//         cout<<get_distance(l, r)<<endl;
//     }
// }
#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...