Submission #1155584

#TimeUsernameProblemLanguageResultExecution timeMemory
1155584grateDNA 돌연변이 (IOI21_dna)C++20
0 / 100
21 ms7680 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define pll pair<ll, ll> #define ppll pair<pll, ll> #define fll(iiii, n) for (ll iiii =0 ; iiii < n; iiii++) #define fllr(i, n1, n2) for (ll i = n1; i <= n2; i++) #define vll vector<ll> #define ft first #define sd second #define prtv(V) fll(i, V.size()) cout << V[i] << " "; cout << '\n'; ll INF = 2e18; vll A; vll X[2], Y[2], Z[2]; bool cnt(vll X[], ll x, ll y) { return X[0][y+1]-X[0][x] == X[1][y+1]-X[1][x]; } void init(std::string a, std::string b) { ll n = a.length(); A = vll(n); fll(i, n) A[i+1] = a[i] == b[i]; fll(i, n) A[i+1] += A[i]; fll(i, 2) { X[i] = vll(n+1); Y[i] = vll(n+1); Z[i] = vll(n+1); } fll(i, n) { X[0][i+1] = X[0][i] + (a[i] == 'A'); X[1][i+1] = X[1][i] + (b[i] == 'A'); Y[0][i+1] = Y[0][i] + (a[i] == 'C'); Y[1][i+1] = Y[1][i] + (b[i] == 'C'); Z[0][i+1] = Z[0][i] + (a[i] == 'T'); Z[1][i+1] = Z[1][i] + (b[i] == 'T'); } } int get_distance(int x, int y) { if (cnt(X, x, y) && cnt(Y, x, y) && cnt(Z, x, y)) return y-x - A[y+1]+A[x]; return -1; }
#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...