Submission #881952

#TimeUsernameProblemLanguageResultExecution timeMemory
881952noyancanturkWeighting stones (IZhO11_stones)C++17
100 / 100
42 ms10372 KiB
#ifndef Local
    #pragma GCC optimize("O3,unroll-loops")
    const int lim=1e5+100;
#else
    const int lim=3e3;
#endif

#include <bits/stdc++.h>
using namespace std;

#define int long long
#define pb push_back

const int mod=1e9+7;
using pii=pair<int,int>;

struct segtree{
    int n,lazy[4*lim];
    pii tree[4*lim];
    segtree(int n):n(n){
        memset(lazy,0,sizeof(lazy));
        fill(tree,tree+4*lim,pii{0,0});
    }
    void push(int node,int l,int r){
        if(!lazy[node])return;
        tree[node].first+=lazy[node];
        tree[node].second+=lazy[node];
        if(l^r){
            int child=node<<1;
            lazy[child]+=lazy[node];
            lazy[child|1]+=lazy[node];
        }
        lazy[node]=0;
    }
    int L,R,VAL;
    pii merge(pii v1,pii v2){
        return pii{min(v1.first,v2.first),max(v1.second,v2.second)};
    }
    pii update(int l,int r,int node){
        push(node,l,r);
        if(r<L||R<l){
            return tree[node];
        }
        if(L<=l&&r<=R){
            lazy[node]+=VAL;
            push(node,l,r);
            return tree[node];
        }
        int mid=(l+r)>>1,child=node<<1;
        return tree[node]=merge(update(l,mid,child),update(mid+1,r,child|1));
    }
    void Update(int l,int r,int val){
        L=l,R=r,VAL=val;
        update(1,n,1);
    }
};

void solve(){
    int n;
    cin>>n;
    segtree a(n);
    for(int i=0;i<n;i++){
        int v,s;
        cin>>v>>s;
        a.Update(1,v,s==1?1:-1);
        if(a.tree[1].first<0&&0<a.tree[1].second){
            cout<<"?\n";
        }else if(a.tree[1].first<0){
            cout<<"<\n";
        }else{
            cout<<">\n";
        }
    }
}

signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);cout.tie(NULL);
#ifdef Local  
    freopen(".in","r",stdin);
    freopen(".out","w",stdout);
#else
    //freopen(".in","r",stdin);
    //freopen(".out","w",stdout);
#endif
    int t=1;
    //cin>>t;
    while (t--)
    {
        solve();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...