이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
#define int long long
using namespace std;
struct range{
int l,r,val;
range(int _l=0,int _r=0,int _val=0){
l=_l,r=_r,val=_val;
}
friend bool operator<(range a,range b){
return a.l<b.l;
}
};
multiset<range>ms;
vector<pair<int,int>>v;
priority_queue<pair<int,int>>pq;
vector<range>pb;
int lz=0;
int add(range x,range cur){
if(x.l>cur.r)return 0;
//cerr<<x.l<<" "<<x.r<<" "<<x.val<<":"<<x.r<<"-"<<cur.l<<"+"<<lz<<"+"<<x.val<<","<<min(x.r,cur.r)-max(x.l,cur.l)+1<<"\n";
pq.push({x.r-cur.l+lz+x.val,min(x.r,cur.r)-max(x.l,cur.l)+1});
return 1;
}
int rans[200005];
int32_t main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int n,m,q;cin>>n>>m>>q;
for(int i=0;i<m;i++){
int l,r;cin>>l>>r;
v.push_back({l,r});
}
for(auto [l,r]:v){
//cerr<<"range:"<<l<<" "<<r<<":\n";
if(!ms.empty()){
auto x=ms.lower_bound(range(l));
if(x!=ms.begin()){
x=prev(x);
if(x->r>=l)ms.insert(range(x->l,l-1,x->val+(x->r-l+1))),ms.insert(range(l,x->r,x->val)),ms.erase(x);
}
x=ms.upper_bound(range(r));
if(x!=ms.begin()){
x=prev(x);
if(x->r>r)ms.insert(range(x->l,r,x->val+x->r-r)),ms.insert(range(r+1,x->r,x->val)),ms.erase(x);
}
x=ms.lower_bound(range(l));
while(x!=ms.end()&&add(*x,range(l,r))){
x=next(x);
ms.erase(prev(x));
}
}
lz+=r-l+1;
ms.insert(range(l,r,-lz));
}
//cerr<<"work\n";
vector<pair<int,int>>qr;
for(int i=0;i<q;i++){
int s;cin>>s;
qr.push_back({s,i});
}
sort(qr.begin(),qr.end(),greater<pair<int,int>>());
int ans=0;
for(auto x:qr){
while(!pq.empty()&&pq.top().first>=x.first){
//cerr<<pq.top().first<<" "<<pq.top().second<<"\n";
ans+=pq.top().second,pq.pop();
}
//cerr<<"\n";
rans[x.second]=ans;
}
for(int i=0;i<q;i++)cout<<rans[i]<<" ";
}
컴파일 시 표준 에러 (stderr) 메시지
Main.cpp: In function 'int32_t main()':
Main.cpp:33:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
33 | for(auto [l,r]:v){
| ^
# | 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... |