제출 #1340715

#제출 시각아이디문제언어결과실행 시간메모리
1340715sztrdxstthgGift Boxes (EGOI25_giftboxes)C++20
19 / 100
122 ms8232 KiB
#include <iostream> 
using namespace std;

const int TAILLE_MAX = 500000;
int nbEquipes, tailleFile;
int idMaxG, idMaxD;
int vals[TAILLE_MAX];
int premOcc[TAILLE_MAX], dernOcc[TAILLE_MAX], occ[TAILLE_MAX];

void lire() {
    cin >> nbEquipes >> tailleFile;
    for (int i = 0; i < tailleFile; i++) premOcc[i]= -1, dernOcc[i] = -1; 
    for (int i = 0; i < tailleFile; i++) {
        cin >> vals[i];
        if (premOcc[vals[i]] == -1) premOcc[vals[i]] = i;
        dernOcc[vals[i]] = i;
    }
}

void trouveMax() {
    //max gauche et droite = max (non inclus -- debut du trou) jusqu'ou on peut aller à droite et a gauche en supposant que l'autre cote est à 0
    for (int i = 0; i < tailleFile; i++) occ[i] = 0;
    idMaxG = 0;
    while (idMaxG < tailleFile && occ[vals[idMaxG]] == 0) {
        occ[vals[idMaxG]] = 1;
        idMaxG++;
    }

    for (int i = 0; i < tailleFile; i++) occ[i] = 0;
    idMaxD = tailleFile - 1;
    while (idMaxD >= 0 && occ[vals[idMaxD]] == 0) {
        occ[vals[idMaxD]] = 1;
        idMaxD--;
    }
    //cout << "idMaxG : " << idMaxG << ", idMaxD : " << idMaxD << '\n';
}

void testCoupes() {
    for (int i = 0; i < tailleFile; i++) occ[i] = 0;
    int scoreMax = 0, gMax, dMax;
    for (int idG = 0; idG < idMaxG; idG++) {
        occ[vals[idG]] = 1;
        idMaxD = max(idMaxD, dernOcc[vals[idG]]);
        if (idG + (tailleFile - idMaxD) > scoreMax) {
            scoreMax = idG + (tailleFile - idMaxD);
            gMax = idG + 1;
            dMax = idMaxD;
        }
    }
    cout << gMax << ' ' << dMax << '\n';
}

int main() {
    lire();
    trouveMax();
    testCoupes();
    return 0;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...