162812025-04-20 09:58:42horkaFőnökszámcpp17Runtime error 0/10061ms65536 KiB
#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define all(x) x.begin(),x.end()
#define pb push_back
#define sz(x) (int)x.size()
const int c=4e5+10;
int mx[4*c];
array<int, 3> mn[4*c];
map<int, int> val[4*c];
const int inf=1e8,minf=-500;
const array<int, 3> nagy{inf,-1};
array<int, 3> combine(array<int, 3> a, array<int, 3> b)
{
    array<int, 3> x;
    x[0]=min(a[0],b[0]);
    if(a[0]<b[0]) x[1]=a[1],x[2]=a[2];
    else x[1]=b[1],x[2]=b[2];
    return x;
}
void valt(int cs, int pos)
{
    mn[cs][1]=pos;
    mn[cs][2]=cs;
    if(val[cs].empty())
    {
        mn[cs][0]=inf,mx[cs]=minf;
    }
    else
    {
        mn[cs][0]=val[cs].begin()->first;
        mx[cs]=val[cs].rbegin()->first;

    }
}
void be(int cs, int tl, int tr, int pos, int ert)
{
    if(tl==tr)
    {
        val[cs][ert]++;
        valt(cs,pos);
        return;
    }
    int mid=(tl+tr)/2;
    if(pos<=mid) be(2*cs,tl,mid,pos,ert);
    else be(2*cs+1,mid+1,tr,pos,ert);
    mn[cs]=combine(mn[2*cs],mn[2*cs+1]);
    mx[cs]=max(mx[2*cs],mx[2*cs+1]);
}
int mxquery(int cs, int tl, int tr, int l, int r)
{
    if(l>r) return minf;
    if(l==tl && r==tr) return mx[cs];
    int mid=(tl+tr)/2;
    return max(mxquery(2*cs,tl,mid,l,min(r,mid)),mxquery(2*cs+1,mid+1,tr,max(mid+1,l),r));
}
array<int, 3> mnquery(int cs, int tl, int tr, int l, int r)
{
    if(l>r) return nagy;
    if(l==tl && r==tr) return mn[cs];
    int mid=(tl+tr)/2;
    return combine(mnquery(2*cs,tl,mid,l,min(r,mid)),mnquery(2*cs+1,mid+1,tr,max(mid+1,l),r));
}
void ki(int cs, int tl, int tr, int pos)
{
    if(tl==tr)
    {
        int x=val[cs].begin()->first;
        val[cs][x]--;
        if(val[cs][x]==0) val[cs].erase(x);
        valt(cs,pos);
        return;
    }
    int mid=(tl+tr)/2;
    if(pos<=mid) ki(2*cs,tl,mid,pos);
    else ki(2*cs+1,mid+1,tr,pos);
    mx[cs]=max(mx[2*cs],mx[2*cs+1]);
    mn[cs]=combine(mn[2*cs],mn[2*cs+1]);
}
int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    for(int i=0; i<4*c; i++)
        mn[i][0]=inf,mx[i]=minf;
    int n; cin>>n;
    vector<int> pontok;
    vector<array<int, 2>> v(n);
    for(auto &[a,b]:v)
    {
        cin>>a>>b;
        pontok.push_back(a);
        pontok.push_back(b);
    }
    sort(all(pontok));
    pontok.erase(unique(all(pontok)),pontok.end());
    for(auto &[a,b]:v)
    {
        a=lower_bound(all(pontok),a)-pontok.begin();
        b=lower_bound(all(pontok),b)-pontok.begin();
    }
    int mer=sz(pontok)-1;
    int cnt=0;
    for(auto &[a,b]:v)
    {
        if(mxquery(1,0,mer,a+1,mer)>b)
        {
            cout<<cnt<<"\n";
            continue;
        }
        be(1,0,mer,a,b);
        cnt++;
        while(1)
        {
            array<int, 3> x=mnquery(1,0,mer,0,a-1);
            if(x[0]>=b) break;
            ki(1,0,mer,x[1]);
            cnt--;
        }
        cout<<cnt<<"\n";
    }
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Runtime error48ms65536 KiB
2Runtime error59ms65536 KiB
subtask20/5
3Runtime error61ms65536 KiB
4Runtime error61ms65536 KiB
5Runtime error50ms65536 KiB
6Runtime error61ms65536 KiB
subtask30/10
7Runtime error61ms65536 KiB
8Runtime error50ms65536 KiB
9Runtime error59ms65536 KiB
10Runtime error61ms65536 KiB
11Runtime error59ms65536 KiB
12Runtime error48ms65536 KiB
13Runtime error50ms65536 KiB
14Runtime error59ms65536 KiB
subtask40/10
15Runtime error59ms65536 KiB
16Runtime error59ms65536 KiB
17Runtime error48ms65536 KiB
18Runtime error48ms65536 KiB
19Runtime error48ms65536 KiB
20Runtime error59ms65536 KiB
21Runtime error48ms65536 KiB
22Runtime error59ms65536 KiB
subtask50/25
23Runtime error48ms65536 KiB
24Runtime error48ms65536 KiB
25Runtime error59ms65536 KiB
26Runtime error61ms65536 KiB
27Runtime error48ms65536 KiB
28Runtime error48ms65536 KiB
29Runtime error59ms65536 KiB
30Runtime error61ms65536 KiB
subtask60/50
31Runtime error61ms65536 KiB
32Runtime error59ms65536 KiB
33Runtime error61ms65536 KiB
34Runtime error61ms65536 KiB
35Runtime error50ms65536 KiB
36Runtime error61ms65536 KiB
37Runtime error61ms65536 KiB
38Runtime error50ms65536 KiB
39Runtime error59ms65536 KiB
40Runtime error61ms65536 KiB
41Runtime error59ms65536 KiB
42Runtime error48ms65536 KiB
43Runtime error50ms65536 KiB
44Runtime error59ms65536 KiB
45Runtime error59ms65536 KiB
46Runtime error59ms65536 KiB
47Runtime error48ms65536 KiB
48Runtime error48ms65536 KiB
49Runtime error48ms65536 KiB
50Runtime error59ms65536 KiB
51Runtime error48ms65536 KiB
52Runtime error59ms65536 KiB
53Runtime error48ms65536 KiB
54Runtime error48ms65536 KiB
55Runtime error59ms65536 KiB
56Runtime error61ms65536 KiB
57Runtime error48ms65536 KiB
58Runtime error48ms65536 KiB
59Runtime error59ms65536 KiB
60Runtime error61ms65536 KiB
61Runtime error59ms65536 KiB
62Runtime error48ms65536 KiB
63Runtime error59ms65536 KiB
64Runtime error59ms65536 KiB
65Runtime error59ms65536 KiB
66Runtime error50ms65536 KiB
67Runtime error48ms65536 KiB
68Runtime error48ms65536 KiB
69Runtime error59ms65536 KiB
70Runtime error59ms65536 KiB