162852025-04-20 10:00:37horkaFőnökszámcpp17Elfogadva 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";
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva39ms50484 KiB
2Elfogadva150ms52404 KiB
subtask25/5
3Elfogadva52ms50500 KiB
4Elfogadva41ms50456 KiB
5Elfogadva41ms50484 KiB
6Elfogadva59ms50740 KiB
subtask310/10
7Elfogadva52ms50284 KiB
8Elfogadva41ms50376 KiB
9Elfogadva52ms50456 KiB
10Elfogadva41ms50488 KiB
11Elfogadva50ms50484 KiB
12Elfogadva52ms50452 KiB
13Elfogadva43ms50484 KiB
14Elfogadva46ms50620 KiB
subtask410/10
15Elfogadva50ms50484 KiB
16Elfogadva52ms50336 KiB
17Elfogadva41ms50536 KiB
18Elfogadva52ms50476 KiB
19Elfogadva57ms50740 KiB
20Elfogadva57ms50992 KiB
21Elfogadva57ms51020 KiB
22Elfogadva175ms57188 KiB
subtask525/25
23Elfogadva50ms50484 KiB
24Elfogadva50ms50484 KiB
25Elfogadva43ms50484 KiB
26Elfogadva56ms50484 KiB
27Elfogadva101ms51408 KiB
28Elfogadva136ms52144 KiB
29Elfogadva150ms52288 KiB
30Elfogadva150ms52380 KiB
subtask650/50
31Elfogadva39ms50324 KiB
32Elfogadva160ms52400 KiB
33Elfogadva52ms50500 KiB
34Elfogadva41ms50456 KiB
35Elfogadva41ms50484 KiB
36Elfogadva59ms50740 KiB
37Elfogadva52ms50284 KiB
38Elfogadva41ms50376 KiB
39Elfogadva52ms50456 KiB
40Elfogadva41ms50488 KiB
41Elfogadva50ms50484 KiB
42Elfogadva52ms50452 KiB
43Elfogadva43ms50484 KiB
44Elfogadva46ms50620 KiB
45Elfogadva50ms50484 KiB
46Elfogadva52ms50336 KiB
47Elfogadva41ms50536 KiB
48Elfogadva52ms50476 KiB
49Elfogadva57ms50740 KiB
50Elfogadva57ms50992 KiB
51Elfogadva57ms51020 KiB
52Elfogadva175ms57188 KiB
53Elfogadva50ms50484 KiB
54Elfogadva50ms50484 KiB
55Elfogadva43ms50484 KiB
56Elfogadva56ms50484 KiB
57Elfogadva101ms51408 KiB
58Elfogadva136ms52144 KiB
59Elfogadva150ms52288 KiB
60Elfogadva150ms52380 KiB
61Elfogadva52ms50484 KiB
62Elfogadva46ms50864 KiB
63Elfogadva43ms50488 KiB
64Elfogadva96ms53756 KiB
65Elfogadva52ms50488 KiB
66Elfogadva43ms50484 KiB
67Elfogadva52ms50484 KiB
68Elfogadva52ms50480 KiB
69Elfogadva114ms52400 KiB
70Elfogadva324ms64264 KiB