이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "bits/stdc++.h"
//#define int long long
#define all(v) v.begin() , v.end()
#define sz(a) (int)a.size()
using namespace std;
const int N = 2e6 + 5;
const int INF = 1e9;
const int LOG = 20;
int n,d,t;
vector<vector<int>> v;
vector<int> ar,par,mark,vis,dp,ptr;
void dfs(int c){
if(vis[c]) return;
vis[c]=1;
ptr[c]=c;
dp[c]=0;
for(int x:v[c]){
dfs(x);
if(dp[x]>=dp[c]){
dp[c]=dp[x]+1;
ptr[c]=ptr[x];
}
}
}
void _(){
cin >> n >> d >> t;
v.resize(n+5),ar.resize(n+5),par.assign(n+5,-1);
mark.assign(n+5,0),vis.assign(n+5,0);
dp.resize(n+5);ptr.resize(n+5);
for(int i=1;i<=n;i++) cin >> ar[i];
stack<int> s,s2;
int hm = INF,lol=0;
for(int i=1;i<=n;i++){
hm++;
hm=min(hm,ar[i]);
if(hm<=t && ar[i]>t){
mark[i]=1;
while(!s2.empty() && ar[s2.top()]+i-s2.top()>t) s2.pop();
while(!s.empty() && s.top()+t-ar[s.top()]<i && (s2.empty() ? 0 : s2.top())<s.top()){
par[s.top()]=i;
v[i].push_back(s.top());
s.pop();
}
s.push(i);
}
else s2.push(i);
}
priority_queue<array<int,2>> pq;
vector<int> use(n+5,0),kill(n+5,0);
for(int i=1;i<=n;i++){
if(!mark[i]) continue;
dfs(i);
if(par[i]==-1) pq.push({dp[i],i});
}
while(d-- && !pq.empty()){
int c = pq.top()[1];
pq.pop();
use[ptr[c]]=1;
int u=ptr[c];
while(u!=c){
kill[u]=1;
for(int x:v[u]) if(!kill[x]) pq.push({dp[x],x});
u=par[u];
}
for(int x:v[u]) if(!kill[x]) pq.push({dp[x],x});
}
int ans=0;hm=INF;
for(int i=1;i<=n;i++){
hm++;
if(use[i]) hm=ar[i];
else hm=min(hm,ar[i]);
if(hm<=t) ans++;
}
cout << ans << '\n';
}
int32_t main(){
cin.tie(0); ios::sync_with_stdio(0);
int tc=1;//cin >> tc;
while(tc--) _();
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
prison.cpp: In function 'void _()':
prison.cpp:36:16: warning: unused variable 'lol' [-Wunused-variable]
36 | int hm = INF,lol=0;
| ^~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |