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...