162842025-04-20 10:00:16horkaFőnökszámcpp17Runtime error 50/100208ms34052 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=1e5+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
1Accepted19ms25396 KiB
2Accepted134ms27312 KiB
subtask25/5
3Accepted20ms25396 KiB
4Accepted26ms25588 KiB
5Accepted26ms25592 KiB
6Accepted28ms25652 KiB
subtask310/10
7Accepted20ms25384 KiB
8Accepted26ms25396 KiB
9Accepted26ms25396 KiB
10Accepted20ms25252 KiB
11Accepted26ms25396 KiB
12Accepted21ms25436 KiB
13Accepted23ms25396 KiB
14Accepted29ms25396 KiB
subtask410/10
15Accepted26ms25396 KiB
16Accepted26ms25292 KiB
17Accepted21ms25396 KiB
18Accepted21ms25396 KiB
19Accepted28ms25836 KiB
20Accepted43ms25908 KiB
21Accepted39ms26184 KiB
22Accepted150ms32168 KiB
subtask525/25
23Accepted20ms25408 KiB
24Accepted26ms25396 KiB
25Accepted28ms25396 KiB
26Accepted25ms25752 KiB
27Accepted71ms26468 KiB
28Accepted111ms27240 KiB
29Accepted135ms27312 KiB
30Accepted128ms27320 KiB
subtask60/50
31Accepted20ms25348 KiB
32Accepted136ms27316 KiB
33Accepted20ms25396 KiB
34Accepted26ms25588 KiB
35Accepted26ms25592 KiB
36Accepted28ms25652 KiB
37Accepted20ms25384 KiB
38Accepted26ms25396 KiB
39Accepted26ms25396 KiB
40Accepted20ms25252 KiB
41Accepted26ms25396 KiB
42Accepted21ms25436 KiB
43Accepted23ms25396 KiB
44Accepted29ms25396 KiB
45Accepted26ms25396 KiB
46Accepted26ms25292 KiB
47Accepted21ms25396 KiB
48Accepted21ms25396 KiB
49Accepted28ms25836 KiB
50Accepted43ms25908 KiB
51Accepted39ms26184 KiB
52Accepted150ms32168 KiB
53Accepted20ms25408 KiB
54Accepted26ms25396 KiB
55Accepted28ms25396 KiB
56Accepted25ms25752 KiB
57Accepted71ms26468 KiB
58Accepted111ms27240 KiB
59Accepted135ms27312 KiB
60Accepted128ms27320 KiB
61Accepted28ms25396 KiB
62Accepted27ms25404 KiB
63Accepted28ms25464 KiB
64Accepted76ms28828 KiB
65Accepted24ms25476 KiB
66Accepted28ms25396 KiB
67Accepted24ms25588 KiB
68Accepted29ms25396 KiB
69Accepted98ms27312 KiB
70Runtime error208ms34052 KiB