Rezultati

Up. imeNalogaJezikRezultatČas oddaje
cimpricevi-angelcki-2019 Biodiverziteta C++ 100/100OK 09. maj '19 @ 20:04

Test Točke Porabljen spomin Porabljen čas Status
#1 [več] 20/20 4,859 MiB 0,000 s OK
#2 [več] 20/20 6,145 MiB 0,000 s OK
#3 [več] 20/20 6,145 MiB 0,000 s OK
#4 [več] 20/20 6,301 MiB 0,000 s OK
#5 [več] 20/20 6,141 MiB 0,000 s OK

Ocenjevani program (biodiverziteta.cpp):
#include <iostream>
#include <cmath>

using namespace std;

int prviIzracun[100009][4];
int drugiIzracun[100009][4];

//0 JE A
//1 JE C
//2 JE G
//3 JE T

int formulca(int A1, int A2, int C1, int C2, int G1, int G2, int T1, int T2){

    //cout << abs(A1 - A2) << " + " << abs(C1 - C2) << " + " << abs(G1 - G2) <<  " + " << abs(T1 - T2);

    return abs(A1 - A2) + abs(C1 - C2) + abs(G1 - G2) + abs(T1 - T2);

}

int main(){

    string niz1;
    string niz2;
    int dolzina1;
    int dolzina2;
    int stTestov;

    int prvaZac;
    int prvaKon;
    int drugaZac;
    int drugaKon;

    cin >> dolzina1 >> dolzina2 >> stTestov >> niz1 >> niz2;

    int Aji = 0;
    int Cji = 0;
    int Gji = 0;
    int Tji = 0;

    for(int i = 1; i < dolzina1 + 1; i++){

        switch(niz1[i - 1]){

            case 'A':
                prviIzracun[i][0] = ++Aji;
                prviIzracun[i][1] = Cji;
                prviIzracun[i][2] = Gji;
                prviIzracun[i][3] = Tji;
                break;
            case 'C':
                prviIzracun[i][0] = Aji;
                prviIzracun[i][1] = ++Cji;
                prviIzracun[i][2] = Gji;
                prviIzracun[i][3] = Tji;
                break;
            case 'G':
                prviIzracun[i][0] = Aji;
                prviIzracun[i][1] = Cji;
                prviIzracun[i][2] = ++Gji;
                prviIzracun[i][3] = Tji;
                break;
            case 'T':
                prviIzracun[i][0] = Aji;
                prviIzracun[i][1] = Cji;
                prviIzracun[i][2] = Gji;
                prviIzracun[i][3] = ++Tji;
                break;

        }

    }

    Aji = 0;
    Cji = 0;
    Gji = 0;
    Tji = 0;

    for(int i = 1; i < dolzina2 + 1; i++){

        switch(niz2[i - 1]){

            case 'A':
                drugiIzracun[i][0] = ++Aji;
                drugiIzracun[i][1] = Cji;
                drugiIzracun[i][2] = Gji;
                drugiIzracun[i][3] = Tji;
                break;
            case 'C':
                drugiIzracun[i][0] = Aji;
                drugiIzracun[i][1] = ++Cji;
                drugiIzracun[i][2] = Gji;
                drugiIzracun[i][3] = Tji;
                break;
            case 'G':
                drugiIzracun[i][0] = Aji;
                drugiIzracun[i][1] = Cji;
                drugiIzracun[i][2] = ++Gji;
                drugiIzracun[i][3] = Tji;
                break;
            case 'T':
                drugiIzracun[i][0] = Aji;
                drugiIzracun[i][1] = Cji;
                drugiIzracun[i][2] = Gji;
                drugiIzracun[i][3] = ++Tji;
                break;

        }

    }

    /*
    dolzina1++;
    dolzina2++;
    for(int i = 0; i < dolzina1; i++){

        cout << prviIzracun[i][0] << " ";

    }
    cout << endl;
    for(int i = 0; i < dolzina1; i++){

        cout << prviIzracun[i][1] << " ";

    }
    cout << endl;
    for(int i = 0; i < dolzina1; i++){

        cout << prviIzracun[i][2] << " ";

    }
    cout << endl;
    for(int i = 0; i < dolzina1; i++){

        cout << prviIzracun[i][3] << " ";

    }
    cout << endl << endl;

    for(int i = 0; i < dolzina2; i++){

        cout << drugiIzracun[i][0] << " ";

    }
    cout << endl;
    for(int i = 0; i < dolzina2; i++){

        cout << drugiIzracun[i][1] << " ";

    }
    cout << endl;
    for(int i = 0; i < dolzina2; i++){

        cout << drugiIzracun[i][2] << " ";

    }
    cout << endl;
    for(int i = 0; i < dolzina2; i++){

        cout << drugiIzracun[i][3] << " ";

    }
    cout << endl;

    cout << endl << endl;

    prvaZac = 0;
    prvaKon = 2;
    drugaZac = 0;
    drugaKon = 3;
    int lmao = formulca(prviIzracun[prvaKon][0] - prviIzracun[prvaZac][0], drugiIzracun[drugaKon][0] - drugiIzracun[drugaZac][0], prviIzracun[prvaKon][1] - prviIzracun[prvaZac][1], drugiIzracun[drugaKon][1] - drugiIzracun[drugaZac][1], prviIzracun[prvaKon][2] - prviIzracun[prvaZac][2], drugiIzracun[drugaKon][2] - drugiIzracun[drugaZac][2], prviIzracun[prvaKon][3] - prviIzracun[prvaZac][3], drugiIzracun[drugaKon][3] - drugiIzracun[drugaZac][3]);
    
    cout << endl << lmao << endl;
    */
    
    for(int i = 0; i < stTestov; i++){

        cin >> prvaZac >> prvaKon >> drugaZac >> drugaKon;

        prvaZac = prvaZac - 1;
        prvaKon;
        drugaZac = drugaZac - 1;
        drugaKon;

        cout << formulca(prviIzracun[prvaKon][0] - prviIzracun[prvaZac][0], drugiIzracun[drugaKon][0] - drugiIzracun[drugaZac][0], prviIzracun[prvaKon][1] - prviIzracun[prvaZac][1], drugiIzracun[drugaKon][1] - drugiIzracun[drugaZac][1], prviIzracun[prvaKon][2] - prviIzracun[prvaZac][2], drugiIzracun[drugaKon][2] - drugiIzracun[drugaZac][2], prviIzracun[prvaKon][3] - prviIzracun[prvaZac][3], drugiIzracun[drugaKon][3] - drugiIzracun[drugaZac][3]) << endl;

    }
    
}