Submission #173849

#TimeUsernameProblemLanguageResultExecution timeMemory
173849arnold518Safety (NOI18_safety)C++14
49 / 100
72 ms4624 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

const int MAXN = 2e5;

int N, K, A[MAXN+10];
ll lx, rx, y;
priority_queue<int, vector<int>, less<int>> l;
priority_queue<int, vector<int>, greater<int>> r;

int main()
{
    int i, j;

    scanf("%d%d", &N, &K);
    for(i=1; i<=N; i++) scanf("%d", &A[i]);

    lx=rx=y=0;
    l.push(A[1]); r.push(A[1]);
    for(i=2; i<=N; i++)
    {
        lx-=K; rx+=K;
        if(l.top()+lx<=A[i] && A[i]<=r.top()+rx)
        {
            l.push(A[i]-lx); r.push(A[i]-rx);
        }
        else if(A[i]<l.top()+lx)
        {
            y+=l.top()+lx-A[i];
            r.push(l.top()+lx-rx);
            l.pop();
            l.push(A[i]-lx);
            l.push(A[i]-lx);
        }
        else
        {
            y+=A[i]-r.top()-rx;
            l.push(r.top()+rx-lx);
            r.pop();
            r.push(A[i]-rx);
            r.push(A[i]-rx);
        }
/*
        vector<ll> VL, VR;
        while(!l.empty()) VL.push_back(l.top()), l.pop();
        for(auto it : VL) l.push(it);

        while(!r.empty()) VR.push_back(r.top()), r.pop();
        for(auto it : VR) r.push(it);

        for(i=0; i<VL.size(); i++) VL[i]+=lx;
        for(i=0; i<VR.size(); i++) VR[i]+=rx;

        printf("VL : "); for(auto it : VL) printf("%lld ", it); printf("\n");
        printf("VR : "); for(auto it : VR) printf("%lld ", it); printf("\n");
        printf("Y : %lld\n", y);
        */
    }
    printf("%lld", y);
}

Compilation message (stderr)

safety.cpp: In function 'int main()':
safety.cpp:17:12: warning: unused variable 'j' [-Wunused-variable]
     int i, j;
            ^
safety.cpp:19:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d", &N, &K);
     ~~~~~^~~~~~~~~~~~~~~~
safety.cpp:20:30: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     for(i=1; i<=N; i++) scanf("%d", &A[i]);
                         ~~~~~^~~~~~~~~~~~~
#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...