Submission #1349138

#TimeUsernameProblemLanguageResultExecution timeMemory
1349138SSKMFSafety (NOI18_safety)C++20
100 / 100
30 ms3704 KiB
#include <bits/stdc++.h>
using namespace std;

int main ()
{
    ios :: sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);

    int cantitate , limita , inaltime;
    cin >> cantitate >> limita >> inaltime;

    priority_queue <int64_t> candidati[2];
    candidati[0].push(inaltime);
    candidati[1].push(-inaltime);

    int64_t termen = 0 , minim = 0;
    for (int indice = 2 ; indice <= cantitate ; indice++)
    {
        cin >> inaltime;
     
        termen += limita;

        if (candidati[0].top() - termen <= inaltime && inaltime <= -candidati[1].top() + termen)
        {
            candidati[0].push(inaltime + termen);
            candidati[1].push(-(inaltime - termen));
        }
        else
            if (candidati[0].top() - termen <= inaltime)
            {
                candidati[0].push(-candidati[1].top() + 2 * termen);
                minim += inaltime - candidati[0].top() + termen;
                candidati[1].pop();
                candidati[1].push(-(inaltime - termen));
                candidati[1].push(-(inaltime - termen));
            }
        else
        {
            candidati[1].push(-(candidati[0].top() - 2 * termen));
            minim += -candidati[1].top() + termen - inaltime;
            candidati[0].pop();
            candidati[0].push(inaltime + termen);
            candidati[0].push(inaltime + termen);
        }
    }
    
    cout << minim;
    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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...