답안 #985923

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
985923 2024-05-19T10:42:40 Z LucaIlie DNA 돌연변이 (IOI21_dna) C++17
0 / 100
33 ms 5716 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 Incorrect 33 ms 5716 KB Possible tampering with the output
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB Possible tampering with the output
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB Possible tampering with the output
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB Possible tampering with the output
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 33 ms 5716 KB Possible tampering with the output
2 Halted 0 ms 0 KB -