답안 #985924

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
985924 2024-05-19T10:43:13 Z LucaIlie DNA 돌연변이 (IOI21_dna) C++17
71 / 100
26 ms 6304 KB
#include "dna.h"
#include <iostream>
using namespace std;
#define nmax 100000

int n;
int AtoT[nmax], AtoC[nmax], TtoA[nmax], TtoC[nmax], CtoA[nmax], CtoT[nmax];
int valAtoT, valAtoC, valTtoA, valTtoC, valCtoA, valCtoT;
string A, B;
void init( string a, string b ) {
    int i;
    n = a.size();
    A = a;
    B = b;
    a = '0' + a;
    b = '0' + b;
    for( i = 1; i <= n; i++ ) {
        AtoT[i] = AtoT[i - 1];
        AtoC[i] = AtoC[i - 1];
        TtoA[i] = TtoA[i - 1];
        TtoC[i] = TtoC[i - 1];
        CtoA[i] = CtoA[i - 1];
        CtoT[i] = CtoT[i - 1];
        if( a[i] == b[i] )
            continue;
        if( a[i] == 'A' ) {
            if( b[i] == 'T' )
                AtoT[i]++;
            else
                AtoC[i]++;
        } else if( a[i] == 'C' ) {
            if( b[i] == 'T' )
                CtoT[i]++;
            else
                CtoA[i]++;
        } else {
            if( b[i] == 'A' )
                TtoA[i]++;
            else
                TtoC[i]++;
        }
    }
}

int get_distance( int x, int y ) {
    int minn, rez = 0;
    x++;
    y++;
    valAtoC = AtoC[y] - AtoC[x - 1];
    valAtoT = AtoT[y] - AtoT[x - 1];
    valTtoC = TtoC[y] - TtoC[x - 1];
    valTtoA = TtoA[y] - TtoA[x - 1];
    valCtoA = CtoA[y] - CtoA[x - 1];
    valCtoT = CtoT[y] - CtoT[x - 1];

    minn = min( valAtoC, valCtoA );
    valAtoC -= minn;
    valCtoA -= minn;
    rez += minn;

    minn = min( valAtoT, valTtoA );
    valAtoT -= minn;
    valTtoA -= minn;
    rez += minn;

    minn = min( valCtoT, valTtoC );
    valCtoT -= minn;
    valTtoC -= minn;
    rez += minn;

    //cout << "rez " << rez << "\n";
    if( valCtoA == valAtoT && valAtoT == valTtoC && valCtoT == valTtoA && valTtoA == valAtoC )
        return rez + 2 * valCtoA + 2 * valAtoC;
    return -1;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 26 ms 4840 KB Output is correct
2 Correct 24 ms 5680 KB Output is correct
3 Correct 24 ms 5200 KB Output is correct
4 Correct 24 ms 5468 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 604 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 3 ms 3676 KB Output is correct
5 Correct 3 ms 3676 KB Output is correct
6 Correct 3 ms 3676 KB Output is correct
7 Correct 3 ms 3416 KB Output is correct
8 Correct 3 ms 3676 KB Output is correct
9 Correct 3 ms 3676 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 604 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 3 ms 3676 KB Output is correct
5 Correct 3 ms 3676 KB Output is correct
6 Correct 3 ms 3676 KB Output is correct
7 Correct 3 ms 3416 KB Output is correct
8 Correct 3 ms 3676 KB Output is correct
9 Correct 3 ms 3676 KB Output is correct
10 Correct 24 ms 5644 KB Output is correct
11 Correct 24 ms 5724 KB Output is correct
12 Correct 25 ms 5976 KB Output is correct
13 Correct 26 ms 5964 KB Output is correct
14 Incorrect 26 ms 6304 KB Output isn't correct
15 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 604 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 3 ms 3676 KB Output is correct
5 Correct 3 ms 3676 KB Output is correct
6 Correct 3 ms 3676 KB Output is correct
7 Correct 3 ms 3416 KB Output is correct
8 Correct 3 ms 3676 KB Output is correct
9 Correct 3 ms 3676 KB Output is correct
10 Correct 3 ms 3420 KB Output is correct
11 Correct 3 ms 3676 KB Output is correct
12 Correct 3 ms 3492 KB Output is correct
13 Correct 4 ms 3676 KB Output is correct
14 Correct 3 ms 3668 KB Output is correct
15 Correct 3 ms 3676 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 26 ms 4840 KB Output is correct
2 Correct 24 ms 5680 KB Output is correct
3 Correct 24 ms 5200 KB Output is correct
4 Correct 24 ms 5468 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 604 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 3 ms 3676 KB Output is correct
12 Correct 3 ms 3676 KB Output is correct
13 Correct 3 ms 3676 KB Output is correct
14 Correct 3 ms 3416 KB Output is correct
15 Correct 3 ms 3676 KB Output is correct
16 Correct 3 ms 3676 KB Output is correct
17 Correct 24 ms 5644 KB Output is correct
18 Correct 24 ms 5724 KB Output is correct
19 Correct 25 ms 5976 KB Output is correct
20 Correct 26 ms 5964 KB Output is correct
21 Incorrect 26 ms 6304 KB Output isn't correct
22 Halted 0 ms 0 KB -