Submission #1347850

#TimeUsernameProblemLanguageResultExecution timeMemory
1347850Muhammad_AneeqWeighting stones (IZhO11_stones)C++20
100 / 100
21 ms3696 KiB
#include <bits/stdc++.h>
using namespace std;
int const N=1e5+10;
struct node
{
    int mn=0,mx=0,lazy=0;    
};
node seg[4*N]={};
node merge(node a,node b)
{
    node c;
    c.mn=min(a.mn,b.mn);
    c.mx=max(a.mx,b.mx);
    return c;
}
void push(int i)
{
    for (int j=2*i;j<=2*i+1;j++)
    {
        seg[j].mn+=seg[i].lazy;
        seg[j].mx+=seg[i].lazy;
        seg[j].lazy+=seg[i].lazy;
    }
    seg[i].lazy=0;
}
node dm;
void upd(int i,int st,int en,int l,int r,int vl)
{
    if (st>=l&&en<=r)
    {
        seg[i].mn+=vl;
        seg[i].mx+=vl;
        seg[i].lazy+=vl;
        return;
    }
    if (st>r||en<l)
        return;
    int mid=(st+en)/2;
    push(i);
    upd(i*2,st,mid,l,r,vl);
    upd(i*2+1,mid+1,en,l,r,vl); 
    seg[i]=merge(seg[i*2],seg[i*2+1]);
}
inline void solve()
{
    int n;
    cin>>n;
    for (int i=0;i<n;i++)
    {
        int r,s;
        cin>>r>>s;
        r--;
        if (s==2)
            s=-1;
        upd(1,0,n-1,0,r,s);
        if (seg[1].mn>=0)
            cout<<">\n";
        else if (seg[1].mx<=0)
            cout<<"<\n";
        else
            cout<<"?\n";
    }
}
int main()
{
    ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    int t=1;
    // cin>>t;
    for (int i=1;i<=t;i++)
    {
        solve();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...