162832025-04-20 09:59:29horkaFőnökszámcpp17Futási hiba 15/10096ms8628 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=10005;
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
1Elfogadva3ms2708 KiB
2Futási hiba79ms5804 KiB
subtask25/5
3Elfogadva3ms2868 KiB
4Elfogadva3ms2868 KiB
5Elfogadva4ms3060 KiB
6Elfogadva12ms3124 KiB
subtask310/10
7Elfogadva3ms2868 KiB
8Elfogadva3ms2868 KiB
9Elfogadva3ms2868 KiB
10Elfogadva3ms2868 KiB
11Elfogadva4ms2872 KiB
12Elfogadva4ms2868 KiB
13Elfogadva6ms2868 KiB
14Elfogadva8ms3124 KiB
subtask40/10
15Elfogadva4ms2872 KiB
16Elfogadva3ms3060 KiB
17Elfogadva4ms2868 KiB
18Elfogadva4ms2868 KiB
19Elfogadva10ms3252 KiB
20Futási hiba14ms3620 KiB
21Futási hiba14ms3588 KiB
22Futási hiba39ms5632 KiB
subtask50/25
23Elfogadva4ms2868 KiB
24Elfogadva4ms3060 KiB
25Elfogadva6ms2868 KiB
26Elfogadva7ms3308 KiB
27Futási hiba39ms4312 KiB
28Futási hiba63ms5412 KiB
29Futási hiba78ms5704 KiB
30Futási hiba79ms5788 KiB
subtask60/50
31Elfogadva4ms2868 KiB
32Futási hiba78ms4780 KiB
33Elfogadva3ms2868 KiB
34Elfogadva3ms2868 KiB
35Elfogadva4ms3060 KiB
36Elfogadva12ms3124 KiB
37Elfogadva3ms2868 KiB
38Elfogadva3ms2868 KiB
39Elfogadva3ms2868 KiB
40Elfogadva3ms2868 KiB
41Elfogadva4ms2872 KiB
42Elfogadva4ms2868 KiB
43Elfogadva6ms2868 KiB
44Elfogadva8ms3124 KiB
45Elfogadva4ms2872 KiB
46Elfogadva3ms3060 KiB
47Elfogadva4ms2868 KiB
48Elfogadva4ms2868 KiB
49Elfogadva10ms3252 KiB
50Futási hiba14ms3620 KiB
51Futási hiba14ms3588 KiB
52Futási hiba39ms5632 KiB
53Elfogadva4ms2868 KiB
54Elfogadva4ms3060 KiB
55Elfogadva6ms2868 KiB
56Elfogadva7ms3308 KiB
57Futási hiba39ms4312 KiB
58Futási hiba63ms5412 KiB
59Futási hiba78ms5704 KiB
60Futási hiba79ms5788 KiB
61Elfogadva7ms3128 KiB
62Elfogadva9ms3112 KiB
63Elfogadva7ms3124 KiB
64Futási hiba21ms4248 KiB
65Elfogadva7ms3124 KiB
66Elfogadva7ms3176 KiB
67Elfogadva7ms3124 KiB
68Elfogadva7ms3128 KiB
69Elfogadva78ms5552 KiB
70Futási hiba96ms8628 KiB