제출 #958219

#제출 시각아이디문제언어결과실행 시간메모리
958219yeediot돌 무게 재기 (IZhO11_stones)C++17
100 / 100
37 ms3920 KiB
#include<bits/stdc++.h>
using namespace std;
const int mxn=1e5+5;
struct node{
    int mx,mn;
};
node operator +(node a,node b){
    return {a.mx>b.mx?a.mx:b.mx,a.mn<b.mn?a.mn:b.mn};
}
int n;
struct segtree{
    node seg[4*mxn];
    int tag[4*mxn];
    void add(int id,int v){
        seg[id].mx+=v;
        seg[id].mn+=v;
        tag[id]+=v;
    }
    void push(int id){
        if(tag[id]==0)
            return;
        add(id*2,tag[id]);
        add(id*2+1,tag[id]);
        tag[id]=0;
    }
    void modify(int l,int r,int id,int ql,int qr,int v){
        if(qr<l or r<ql)
            return;
        if(ql<=l and r<=qr){
            add(id,v);
            return;
        }
        int mm=l+r>>1;
        push(id);
        modify(l,mm,id*2,ql,qr,v);
        modify(mm+1,r,id*2+1,ql,qr,v);
        seg[id]=seg[id*2]+seg[id*2+1];
    }
    void modify(int l,int r,int v){
        modify(1,n,1,l,r,v);
    }
}tr;
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>n;
    for(int i=1;i<=n;i++){
        int c,s;
        cin>>c>>s;
        s=(s==1?1:-1);
        tr.modify(1,c,s);
        if(tr.seg[1].mn>=0)
            cout<<">\n";
        else if(tr.seg[1].mx<=0)
            cout<<"<\n";
        else
            cout<<"?\n";
    }
}

컴파일 시 표준 에러 (stderr) 메시지

stones.cpp: In member function 'void segtree::modify(int, int, int, int, int, int)':
stones.cpp:33:17: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   33 |         int mm=l+r>>1;
      |                ~^~
#Verdict Execution timeMemoryGrader output
Fetching results...