162842025-04-20 10:00:16horkaFőnökszámcpp17Futási hiba 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";
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva19ms25396 KiB
2Elfogadva134ms27312 KiB
subtask25/5
3Elfogadva20ms25396 KiB
4Elfogadva26ms25588 KiB
5Elfogadva26ms25592 KiB
6Elfogadva28ms25652 KiB
subtask310/10
7Elfogadva20ms25384 KiB
8Elfogadva26ms25396 KiB
9Elfogadva26ms25396 KiB
10Elfogadva20ms25252 KiB
11Elfogadva26ms25396 KiB
12Elfogadva21ms25436 KiB
13Elfogadva23ms25396 KiB
14Elfogadva29ms25396 KiB
subtask410/10
15Elfogadva26ms25396 KiB
16Elfogadva26ms25292 KiB
17Elfogadva21ms25396 KiB
18Elfogadva21ms25396 KiB
19Elfogadva28ms25836 KiB
20Elfogadva43ms25908 KiB
21Elfogadva39ms26184 KiB
22Elfogadva150ms32168 KiB
subtask525/25
23Elfogadva20ms25408 KiB
24Elfogadva26ms25396 KiB
25Elfogadva28ms25396 KiB
26Elfogadva25ms25752 KiB
27Elfogadva71ms26468 KiB
28Elfogadva111ms27240 KiB
29Elfogadva135ms27312 KiB
30Elfogadva128ms27320 KiB
subtask60/50
31Elfogadva20ms25348 KiB
32Elfogadva136ms27316 KiB
33Elfogadva20ms25396 KiB
34Elfogadva26ms25588 KiB
35Elfogadva26ms25592 KiB
36Elfogadva28ms25652 KiB
37Elfogadva20ms25384 KiB
38Elfogadva26ms25396 KiB
39Elfogadva26ms25396 KiB
40Elfogadva20ms25252 KiB
41Elfogadva26ms25396 KiB
42Elfogadva21ms25436 KiB
43Elfogadva23ms25396 KiB
44Elfogadva29ms25396 KiB
45Elfogadva26ms25396 KiB
46Elfogadva26ms25292 KiB
47Elfogadva21ms25396 KiB
48Elfogadva21ms25396 KiB
49Elfogadva28ms25836 KiB
50Elfogadva43ms25908 KiB
51Elfogadva39ms26184 KiB
52Elfogadva150ms32168 KiB
53Elfogadva20ms25408 KiB
54Elfogadva26ms25396 KiB
55Elfogadva28ms25396 KiB
56Elfogadva25ms25752 KiB
57Elfogadva71ms26468 KiB
58Elfogadva111ms27240 KiB
59Elfogadva135ms27312 KiB
60Elfogadva128ms27320 KiB
61Elfogadva28ms25396 KiB
62Elfogadva27ms25404 KiB
63Elfogadva28ms25464 KiB
64Elfogadva76ms28828 KiB
65Elfogadva24ms25476 KiB
66Elfogadva28ms25396 KiB
67Elfogadva24ms25588 KiB
68Elfogadva29ms25396 KiB
69Elfogadva98ms27312 KiB
70Futási hiba208ms34052 KiB