162812025-04-20 09:58:42horkaFőnökszámcpp17Futási hiba 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";
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Futási hiba48ms65536 KiB
2Futási hiba59ms65536 KiB
subtask20/5
3Futási hiba61ms65536 KiB
4Futási hiba61ms65536 KiB
5Futási hiba50ms65536 KiB
6Futási hiba61ms65536 KiB
subtask30/10
7Futási hiba61ms65536 KiB
8Futási hiba50ms65536 KiB
9Futási hiba59ms65536 KiB
10Futási hiba61ms65536 KiB
11Futási hiba59ms65536 KiB
12Futási hiba48ms65536 KiB
13Futási hiba50ms65536 KiB
14Futási hiba59ms65536 KiB
subtask40/10
15Futási hiba59ms65536 KiB
16Futási hiba59ms65536 KiB
17Futási hiba48ms65536 KiB
18Futási hiba48ms65536 KiB
19Futási hiba48ms65536 KiB
20Futási hiba59ms65536 KiB
21Futási hiba48ms65536 KiB
22Futási hiba59ms65536 KiB
subtask50/25
23Futási hiba48ms65536 KiB
24Futási hiba48ms65536 KiB
25Futási hiba59ms65536 KiB
26Futási hiba61ms65536 KiB
27Futási hiba48ms65536 KiB
28Futási hiba48ms65536 KiB
29Futási hiba59ms65536 KiB
30Futási hiba61ms65536 KiB
subtask60/50
31Futási hiba61ms65536 KiB
32Futási hiba59ms65536 KiB
33Futási hiba61ms65536 KiB
34Futási hiba61ms65536 KiB
35Futási hiba50ms65536 KiB
36Futási hiba61ms65536 KiB
37Futási hiba61ms65536 KiB
38Futási hiba50ms65536 KiB
39Futási hiba59ms65536 KiB
40Futási hiba61ms65536 KiB
41Futási hiba59ms65536 KiB
42Futási hiba48ms65536 KiB
43Futási hiba50ms65536 KiB
44Futási hiba59ms65536 KiB
45Futási hiba59ms65536 KiB
46Futási hiba59ms65536 KiB
47Futási hiba48ms65536 KiB
48Futási hiba48ms65536 KiB
49Futási hiba48ms65536 KiB
50Futási hiba59ms65536 KiB
51Futási hiba48ms65536 KiB
52Futási hiba59ms65536 KiB
53Futási hiba48ms65536 KiB
54Futási hiba48ms65536 KiB
55Futási hiba59ms65536 KiB
56Futási hiba61ms65536 KiB
57Futási hiba48ms65536 KiB
58Futási hiba48ms65536 KiB
59Futási hiba59ms65536 KiB
60Futási hiba61ms65536 KiB
61Futási hiba59ms65536 KiB
62Futási hiba48ms65536 KiB
63Futási hiba59ms65536 KiB
64Futási hiba59ms65536 KiB
65Futási hiba59ms65536 KiB
66Futási hiba50ms65536 KiB
67Futási hiba48ms65536 KiB
68Futási hiba48ms65536 KiB
69Futási hiba59ms65536 KiB
70Futási hiba59ms65536 KiB