162852025-04-20 10:00:37horkaFőnökszámcpp17Accepted 100/100324ms64264 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=2e5+2;
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
1Accepted39ms50484 KiB
2Accepted150ms52404 KiB
subtask25/5
3Accepted52ms50500 KiB
4Accepted41ms50456 KiB
5Accepted41ms50484 KiB
6Accepted59ms50740 KiB
subtask310/10
7Accepted52ms50284 KiB
8Accepted41ms50376 KiB
9Accepted52ms50456 KiB
10Accepted41ms50488 KiB
11Accepted50ms50484 KiB
12Accepted52ms50452 KiB
13Accepted43ms50484 KiB
14Accepted46ms50620 KiB
subtask410/10
15Accepted50ms50484 KiB
16Accepted52ms50336 KiB
17Accepted41ms50536 KiB
18Accepted52ms50476 KiB
19Accepted57ms50740 KiB
20Accepted57ms50992 KiB
21Accepted57ms51020 KiB
22Accepted175ms57188 KiB
subtask525/25
23Accepted50ms50484 KiB
24Accepted50ms50484 KiB
25Accepted43ms50484 KiB
26Accepted56ms50484 KiB
27Accepted101ms51408 KiB
28Accepted136ms52144 KiB
29Accepted150ms52288 KiB
30Accepted150ms52380 KiB
subtask650/50
31Accepted39ms50324 KiB
32Accepted160ms52400 KiB
33Accepted52ms50500 KiB
34Accepted41ms50456 KiB
35Accepted41ms50484 KiB
36Accepted59ms50740 KiB
37Accepted52ms50284 KiB
38Accepted41ms50376 KiB
39Accepted52ms50456 KiB
40Accepted41ms50488 KiB
41Accepted50ms50484 KiB
42Accepted52ms50452 KiB
43Accepted43ms50484 KiB
44Accepted46ms50620 KiB
45Accepted50ms50484 KiB
46Accepted52ms50336 KiB
47Accepted41ms50536 KiB
48Accepted52ms50476 KiB
49Accepted57ms50740 KiB
50Accepted57ms50992 KiB
51Accepted57ms51020 KiB
52Accepted175ms57188 KiB
53Accepted50ms50484 KiB
54Accepted50ms50484 KiB
55Accepted43ms50484 KiB
56Accepted56ms50484 KiB
57Accepted101ms51408 KiB
58Accepted136ms52144 KiB
59Accepted150ms52288 KiB
60Accepted150ms52380 KiB
61Accepted52ms50484 KiB
62Accepted46ms50864 KiB
63Accepted43ms50488 KiB
64Accepted96ms53756 KiB
65Accepted52ms50488 KiB
66Accepted43ms50484 KiB
67Accepted52ms50484 KiB
68Accepted52ms50480 KiB
69Accepted114ms52400 KiB
70Accepted324ms64264 KiB