이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "candies.h"
#include<bits/stdc++.h>
using namespace std;
int CONS;
vector<int>ans;
struct segtree{
struct DATA{
int mx,mn,add;
DATA(){
mx=1e9;
mn=0;
add=0;
}
DATA(int a,int b,int c){
mx=a,mn=b,add=c;
}
void apply(DATA k){
mx+=k.add,mn+=k.add,add+=k.add;
mx=min(mx,k.mx),mn=min(mn,k.mx);
mx=max(mx,k.mn),mn=max(mn,k.mn);
add=min(max(add,-CONS),CONS);
}
} T[1<<19];
void pd(int i){
T[i*2].apply(T[i]);
T[i*2+1].apply(T[i]);
T[i]=DATA();
}
void upd(int i,int l,int r,int ll,int rr,int v){
if(ll<=l&&r<=rr)
return T[i].apply((DATA){CONS,0,v});
if(ll>r||l>rr) return;
pd(i);upd(i*2,l,l+r>>1,ll,rr,v);
upd(i*2+1,l+r+2>>1,r,ll,rr,v);
}
void traverse(int i,int l,int r){ if(l==r)
return ans.push_back(max(T[i].mn,min(T[i].mx,T[i].add)));
pd(i);traverse(i*2,l,l+r>>1);
traverse(i*2+1,l+r+2>>1,r);
}
} seg;
std::vector<int> distribute_candies(std::vector<int> c, std::vector<int> l,
std::vector<int> r, std::vector<int> v) {
CONS=c[0];
int n = c.size(),q=l.size();
for(int i=0;i<q;i++)
seg.upd(1,0,n-1,l[i],r[i],v[i]);
seg.traverse(1,0,n-1);
return ans;
}
컴파일 시 표준 에러 (stderr) 메시지
candies.cpp: In member function 'void segtree::upd(int, int, int, int, int, int)':
candies.cpp:34:26: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
34 | pd(i);upd(i*2,l,l+r>>1,ll,rr,v);
| ~^~
candies.cpp:35:22: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
35 | upd(i*2+1,l+r+2>>1,r,ll,rr,v);
| ~~~^~
candies.cpp: In member function 'void segtree::traverse(int, int, int)':
candies.cpp:39:31: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
39 | pd(i);traverse(i*2,l,l+r>>1);
| ~^~
candies.cpp:40:27: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
40 | traverse(i*2+1,l+r+2>>1,r);
| ~~~^~
# | 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... |