Submission #1359516

#TimeUsernameProblemLanguageResultExecution timeMemory
1359516sztrdxstthgInflation (EGOI23_inflation)C++20
84 / 100
42 ms17624 KiB
#include <iostream>
#define int long long
using namespace std;

const int PRIX_MAX = 1000001;
int nbPrix, nbJours;
int occ[PRIX_MAX * 2];
int sSSInfl, sInfl;
int pST1;

void init() {
    cin >> nbPrix;
    for (int p = 0; p < PRIX_MAX * 2; p++) occ[p] = 0;
    if (nbPrix == 1) {
        cin >> pST1;
    }
    else {
        for (int idP = 0; idP < nbPrix; idP++) {
            int prix;
            cin >> prix;
            occ[prix+PRIX_MAX]++;
            sSSInfl += prix;
        }
    }
}

void sst1() {
    int p = pST1;
    cin >> nbJours;
    for (int idJ = 0; idJ < nbJours; idJ++) {
        string s;
        cin >> s;
        if (s == "SET") {
            int x, y;
            cin >> x >> y;
            if (p == x) p = y;
        }
        else {
            int x;
            cin >> x;
            p += x;
        }
        cout << p << '\n';
    }
}

void jours() {
    cin >> nbJours;
    for (int idJ = 0; idJ < nbJours; idJ++) {
        string r;
        cin >> r;
        //cout << "\n\njour num : " << idJ << ' ';
        if (r == "SET") {
            int dep, arr;
            cin >> dep >> arr;
            dep -= sInfl, arr -= sInfl; 
            dep += PRIX_MAX, arr += PRIX_MAX;
            int nb = occ[dep];
            occ[dep] -= nb;
            sSSInfl -= nb * (dep - PRIX_MAX);
            occ[arr] += nb;
            sSSInfl += nb * (arr - PRIX_MAX);
        }
        else {
            int x;
            cin >> x;
            sInfl += x;
        }
        /*cout << "occ : ";
        for (int i = 0; i <= 30; i++) cout << occ[i] << ' ';
            cout << "\n\n";
        
        cout << sSSInfl << ' ' << sInfl << '\n';*/
        cout << sSSInfl + sInfl*nbPrix << '\n';
    }
}


signed main() {
    ios::sync_with_stdio(false), cin.tie(0);
    init();
    if (nbPrix == 1) sst1();
    else jours();
    return 0;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...