답안 #437166

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
437166 2021-06-26T01:13:59 Z flashhh DNA 돌연변이 (IOI21_dna) C++17
35 / 100
53 ms 5184 KB
#include <bits/stdc++.h>
#define ll long long
#define pii pair<int,int>
#define tii tuple<int,int,int>
#define fi first
#define se second
#define bp __builtin_popcount
#define nmax 100010
#define pb emplace_back

int getbit(ll x,int y)
{
    return (x>>y)&1;
}
ll getoff(ll x,int y)
{
    return x^((1ll)<<y);
}

using namespace std;

struct node
{
    int AT,AC,TA,TC,CA,CT;
    node() {}
};

int n,q;
string a,b;
node pre[nmax];

void init(string aa,string bb)
{
    a=aa; b=bb;
    n=a.length();

    for (int i=0;i<n;++i)
    {
        pre[i]=pre[i-1];
        if (a[i]=='A')
        {
            if (b[i]=='C') ++pre[i].AC;
            else if (b[i]=='T') ++pre[i].AT;
        }
        else if (a[i]=='C')
        {
            if (b[i]=='A') ++pre[i].CA;
            else if (b[i]=='T') ++pre[i].CT;
        }
        else if (a[i]=='T')
        {
            if (b[i]=='A') ++pre[i].TA;
            else if (b[i]=='C') ++pre[i].TC;
        }
    }
}
int get_distance(int x,int y)
{
    int AC=pre[y].AC-pre[x-1].AC;
    int AT=pre[y].AT-pre[x-1].AT;
    
    int CA=pre[y].CA-pre[x-1].CA;
    int CT=pre[y].CT-pre[x-1].CT;
    int TA=pre[y].TA-pre[x-1].TA;
    int TC=pre[y].TC-pre[x-1].TC;

    if (AC+AT!=CA+TA) return -1;
    if (CA+CT!=AC+TC) return -1;
    if (TA+TC!=AT+CT) return -1;

    int res=AC+AT;
    AC-=min(AC,CA); AT-=min(AT,TA);

    if (AC>0) res+=CT;
    else if (AT>0) res+=TC;

    return res;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 37 ms 4676 KB Output is correct
2 Correct 37 ms 4720 KB Output is correct
3 Incorrect 37 ms 4504 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 5 ms 3276 KB Output is correct
5 Correct 5 ms 3404 KB Output is correct
6 Correct 4 ms 3276 KB Output is correct
7 Correct 5 ms 3148 KB Output is correct
8 Correct 5 ms 3404 KB Output is correct
9 Correct 5 ms 3392 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 5 ms 3276 KB Output is correct
5 Correct 5 ms 3404 KB Output is correct
6 Correct 4 ms 3276 KB Output is correct
7 Correct 5 ms 3148 KB Output is correct
8 Correct 5 ms 3404 KB Output is correct
9 Correct 5 ms 3392 KB Output is correct
10 Correct 42 ms 4668 KB Output is correct
11 Correct 37 ms 4704 KB Output is correct
12 Correct 38 ms 4900 KB Output is correct
13 Correct 38 ms 4932 KB Output is correct
14 Correct 53 ms 5064 KB Output is correct
15 Correct 38 ms 4992 KB Output is correct
16 Correct 35 ms 4868 KB Output is correct
17 Correct 45 ms 4932 KB Output is correct
18 Correct 37 ms 5036 KB Output is correct
19 Correct 45 ms 4896 KB Output is correct
20 Correct 38 ms 4944 KB Output is correct
21 Correct 35 ms 5184 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 5 ms 3276 KB Output is correct
5 Correct 5 ms 3404 KB Output is correct
6 Correct 4 ms 3276 KB Output is correct
7 Correct 5 ms 3148 KB Output is correct
8 Correct 5 ms 3404 KB Output is correct
9 Correct 5 ms 3392 KB Output is correct
10 Incorrect 4 ms 3148 KB Output isn't correct
11 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 37 ms 4676 KB Output is correct
2 Correct 37 ms 4720 KB Output is correct
3 Incorrect 37 ms 4504 KB Output isn't correct
4 Halted 0 ms 0 KB -