Submission #425266

#TimeUsernameProblemLanguageResultExecution timeMemory
425266zoooma13The short shank; Redemption (BOI21_prison)C++14
55 / 100
2086 ms14256 KiB
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n ,k ,T;
    scanf("%d%d%d",&n,&k,&T);
    vector <int> a(n);
    for(int&i : a)
        scanf("%d",&i);

    int ans = 0;
    vector <pair<int ,int>> rs ,q;
    for(int i = 0; i < n; i++){
        while(!q.empty() && q.back().first > T-i)
            q.pop_back();
        if(a[i] <= T){
            while(!q.empty() && q.back().first >= a[i]-i)
                q.pop_back();
            q.push_back({a[i]-i ,i});
        }else if(!q.empty())
            rs.push_back({q.back().second ,i-1});
        else
            ans++;
    }

    for(int s = 0; s < k && !rs.empty(); s++){
        vector <int> cum(n+1);
        for(auto&p : rs)
            cum[p.first]++ ,cum[p.second+1]--;
        for(int i = 0; i <= n; i++)
            cum[i] += (i? cum[i-1] : 0);

        int rem = max_element(cum.begin() ,cum.end()) - cum.begin();
        ans += cum[rem];

        vector <pair <int ,int>> new_rs;
        for(auto&p : rs) if(rem < p.first || p.second < rem)
            new_rs.push_back(p);
        rs = new_rs;
    }
    printf("%d\n",n-ans);
}

Compilation message (stderr)

prison.cpp: In function 'int main()':
prison.cpp:7:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
    7 |     scanf("%d%d%d",&n,&k,&T);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~
prison.cpp:10:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |         scanf("%d",&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...