Submission #974170

# Submission time Handle Problem Language Result Execution time Memory
974170 2024-05-03T03:34:34 Z modwwe Event Hopping 2 (JOI21_event2) C++17
Compilation error
0 ms 0 KB
#pragma GCC optimize("Ofast,unroll-loops")
#pragma GCC target("avx,avx2,sse,sse2")
#include<bits/stdc++.h>
#define int long long
//#define ll long long
#define down cout<<'\n';
#define NHP     ios_base::sync_with_stdio(0);cout.tie(0);cin.tie(0);
#define modwwe  int t;cin>>t; while(t--)
#define bit(i,j) (i>>j&1)
#define sobit(a) __builtin_popcountll(a)
#define task "test"
#define fin(x) freopen(x".inp","r",stdin)
#define fou(x) freopen(x".out","w",stdout)
#define pb push_back
#define checktime   cerr << (double)clock() / CLOCKS_PER_SEC * 1000  << " ms";
using namespace std;
void ngha();
const int mod2=1e9+7;
const int  mod1=998244353;
struct ib
{
    int a;
    int b;
};
struct icd
{
    int a,b;
};
struct ic
{
    int a,b,c;
};
struct id
{
    int a,b,c,d;
};
struct ie
{
    int a,b,c, d,e;

};
int n,m,s1,s2,s4,s3,sf,k,r,mid,s5,s6,mx,s7,s8,s9,mx2,res,dem2=0,dem=0,l;
int  i,s10,s12;
int el=29;
main()
{
//#ifndef ONLINE_JUDGE
   /// fin(task),fou(task);
//#endif
    NHP
//modwwe
    //  cin>>res;
    ngha();

}
ic bit[1000001];
int bit2[1000001];
ic a[500002];
int b[500001];
ic c[500001];
int st[18][1000003];
int g[1000003];
vector<int>v;
vector<int> v2;
bool cmp(ic a,ic b)
{
    return a.a<b.a;
}

void upd(int x,int y,int z,int cc)
{
    for(x; x<=2*n; x+=x&-x)
    {
        if(y>bit[x].a)
            bit[x].a=y,bit[x].b=z,bit[x].c=cc;
    }
    ///bit[x]=max(bit[x],y);
}
ic get(int x)
{
    int ss=0;
    for(x; x; x-=x&-x)
    {
        if(bit[x].a>bit[ss].a)ss=x;
    }
    return bit[ss];
}
void upd2(int x,int y)
{
    for(x; x; x-=x&-x)bit2[x]=min(bit2[x],y);
}
int get2(int x)
{
    int ss=1e9+1;
    for(x; x<=2*n; x+=x&-x) //cout<<x<<" "<<bit2[x]<<" "<<ss,down
    {
        ss=min(bit2[x],ss);
    }
    return ss;
}
int get3(int x,int y)
{
    int ss=0;
    for(int j=17; j>=0; --j)
    {
        if(g[st[j][x]]<=y)
        {
            //  cout<<g[st[j][x]]<<" "<<st[j][x]<<" "<<j<<" "<<x,down
            //if(j==17) cout<<j<<" "<<st[j][x],down
            x=st[j][x];
            ss+=(1<<j);
        }
    }
    return ss;
}
int get4(int x,int y)
{
    int ss=0;
    for(int j=17; j>=0; --j)
    {
        if(g[st[j][x]]<=y)
        {
            //  cout<<g[st[j][x]]<<" "<<st[j][x]<<" "<<j<<" "<<x,down
            //if(j==17) cout<<j<<" "<<st[j][x],down
            x=st[j][x];
            ss+=(1<<j);
        }
    }
    return ss;
}
vector<int> v3;
void ngha()
{
    cin>>n>>k;
    for(int i=1; i<=n; i++)
        cin>>a[i].a>>a[i].b,v.pb(a[i].a),v.pb(a[i].b),v3.pb(a[i].a),a[i].c=i;
    v3.pb(0);
    v3.pb(1e9+1);
    sort(v.begin(),v.end());
    sort(v3.begin(),v3.end());
    for(int i=1; i<=n; i++)
        a[i].a=lower_bound(v.begin(),v.end(),a[i].a)-v.begin()+1,
            a[i].b=lower_bound(v.begin(),v.end(),a[i].b)-v.begin()+1;
    ///c[i]=a[i];
    for(int i=1; i<=n; i++) c[i]=a[i];
    sort(a+1,a+1+n,cmp);
/// nhay nhi phan :/
    s2=a[n].b;
    s3=n;
    b[n]=n;
    b[n+1]=n+1;
    a[n+1].a=1e9+1;
    a[n+1].c=n+1;
    for(int i=0; i<=17; i++)
        st[i][n+1]=n+1;
    for(int i=n-1; i>=1; --i)
    {
        if(a[i].b<s2) s2=a[i].b,s3=i;
        b[i]=s3;
    }
    g[n+1]=1e9;
    for(int i=0; i<=n; ++i)
    {
        l=i+1;
        r=n;
        while(l<=r)
        {
            int mid=l+r>>1;
            if(a[mid].a>=a[i].b) r=mid-1;
            else l=mid+1;
        }
        st[0][a[i].c]=a[b[r+1]].c;
        if(a[r+1].a==1e9+1)
        {
            if(g[a[i].c]==0) g[a[i].c]=lower_bound(v3.begin(),v3.end(),a[r+1].a)-v3.begin();
            g[a[i].c]=min(g[a[i].c],lower_bound(v3.begin(),v3.end(),a[r+1].a)-v3.begin());
        }
        else
        {
            if(g[a[i].c]==0) g[a[i].c]=lower_bound(v3.begin(),v3.end(),v[a[r+1].a-1])-v3.begin();
            g[a[i].c]=min(g[a[i].c],lower_bound(v3.begin(),v3.end(),v[a[r+1].a-1])-v3.begin());
        }
        // cout<<i<<" "<<a[i].a<<" "<<b[r+1]<<" "<<a[b[r+1]].a<<" "<<r+1,down
///if(a[i].c==3) cout<<r+1<<" "<<g[a[i].c],down
    }
    for(int i=1; i<18; i++)
        for(int j=0; j<=n*2; j++)
            st[i][j]=st[i-1][st[i-1][j]];
    for(int i=1; i<=n*2; i++)
        bit[i]= {0,0},bit2[i]=1e9+1;
    for(int i=1; i<=n; i++)
        a[i]=c[i];
    /// cout<<get3(1,4)<<" "<<get3(0,2),down
    /// cout<<get3(0,2),down
    ///  cout<<st[0][1],down
    dem=0;
    // cout<<get3(1,11);
    mx2=get3(0,n+1);
    for(int i=1; i<=n; i++)
    {
        //cout<<i,down
        if(dem==k)
        {
            break;
        }
        ic ss2=get(a[i].a);
        if(ss2.b>a[i].a) continue;

        s2=ss2.c;
        s3=get2(a[i].a);
        if(a[i].b>s3) continue;
        if(s3==1e9+1) s3=lower_bound(v3.begin(),v3.end(),s3)-v3.begin();
        else s3=lower_bound(v3.begin(),v3.end(),v[s3-1])-v3.begin();
        s9=lower_bound(v3.begin(),v3.end(),v[a[i].a-1])-v3.begin();
        if(mx2-get3(s2,s3)+get3(s2,s9)+get3(i,s3)+1>=k)
        {
            mx2=mx2-get3(s2,s3)+get3(s2,s9)+get3(i,s3)+1;
            dem++;
            upd(a[i].a,a[i].a,a[i].b,i);
            upd2(a[i].a,a[i].a);
            v2.pb(i);

        }
    }
    if(dem==k)
        for(auto x:v2)
            cout<<x,down
                else cout<<-1;
}
/*
4 3
21 54
86 92
85 90
90 101



*/

Compilation message

event2.cpp:45:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   45 | main()
      | ^~~~
event2.cpp: In function 'void upd(long long int, long long int, long long int, long long int)':
event2.cpp:72:9: warning: statement has no effect [-Wunused-value]
   72 |     for(x; x<=2*n; x+=x&-x)
      |         ^
event2.cpp: In function 'ic get(long long int)':
event2.cpp:82:9: warning: statement has no effect [-Wunused-value]
   82 |     for(x; x; x-=x&-x)
      |         ^
event2.cpp: In function 'void upd2(long long int, long long int)':
event2.cpp:90:9: warning: statement has no effect [-Wunused-value]
   90 |     for(x; x; x-=x&-x)bit2[x]=min(bit2[x],y);
      |         ^
event2.cpp: In function 'long long int get2(long long int)':
event2.cpp:95:9: warning: statement has no effect [-Wunused-value]
   95 |     for(x; x<=2*n; x+=x&-x) //cout<<x<<" "<<bit2[x]<<" "<<ss,down
      |         ^
event2.cpp: In function 'void ngha()':
event2.cpp:168:22: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
  168 |             int mid=l+r>>1;
      |                     ~^~
event2.cpp:176:89: error: no matching function for call to 'min(long long int&, __gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >::difference_type)'
  176 |             g[a[i].c]=min(g[a[i].c],lower_bound(v3.begin(),v3.end(),a[r+1].a)-v3.begin());
      |                                                                                         ^
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from event2.cpp:3:
/usr/include/c++/10/bits/stl_algobase.h:230:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  230 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:230:5: note:   template argument deduction/substitution failed:
event2.cpp:176:89: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >::difference_type' {aka 'long int'})
  176 |             g[a[i].c]=min(g[a[i].c],lower_bound(v3.begin(),v3.end(),a[r+1].a)-v3.begin());
      |                                                                                         ^
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from event2.cpp:3:
/usr/include/c++/10/bits/stl_algobase.h:278:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  278 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:278:5: note:   template argument deduction/substitution failed:
event2.cpp:176:89: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >::difference_type' {aka 'long int'})
  176 |             g[a[i].c]=min(g[a[i].c],lower_bound(v3.begin(),v3.end(),a[r+1].a)-v3.begin());
      |                                                                                         ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from event2.cpp:3:
/usr/include/c++/10/bits/stl_algo.h:3468:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)'
 3468 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3468:5: note:   template argument deduction/substitution failed:
event2.cpp:176:89: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
  176 |             g[a[i].c]=min(g[a[i].c],lower_bound(v3.begin(),v3.end(),a[r+1].a)-v3.begin());
      |                                                                                         ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from event2.cpp:3:
/usr/include/c++/10/bits/stl_algo.h:3474:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)'
 3474 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3474:5: note:   template argument deduction/substitution failed:
event2.cpp:176:89: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
  176 |             g[a[i].c]=min(g[a[i].c],lower_bound(v3.begin(),v3.end(),a[r+1].a)-v3.begin());
      |                                                                                         ^
event2.cpp:181:94: error: no matching function for call to 'min(long long int&, __gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >::difference_type)'
  181 |             g[a[i].c]=min(g[a[i].c],lower_bound(v3.begin(),v3.end(),v[a[r+1].a-1])-v3.begin());
      |                                                                                              ^
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from event2.cpp:3:
/usr/include/c++/10/bits/stl_algobase.h:230:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  230 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:230:5: note:   template argument deduction/substitution failed:
event2.cpp:181:94: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >::difference_type' {aka 'long int'})
  181 |             g[a[i].c]=min(g[a[i].c],lower_bound(v3.begin(),v3.end(),v[a[r+1].a-1])-v3.begin());
      |                                                                                              ^
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from event2.cpp:3:
/usr/include/c++/10/bits/stl_algobase.h:278:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  278 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:278:5: note:   template argument deduction/substitution failed:
event2.cpp:181:94: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >::difference_type' {aka 'long int'})
  181 |             g[a[i].c]=min(g[a[i].c],lower_bound(v3.begin(),v3.end(),v[a[r+1].a-1])-v3.begin());
      |                                                                                              ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from event2.cpp:3:
/usr/include/c++/10/bits/stl_algo.h:3468:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)'
 3468 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3468:5: note:   template argument deduction/substitution failed:
event2.cpp:181:94: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
  181 |             g[a[i].c]=min(g[a[i].c],lower_bound(v3.begin(),v3.end(),v[a[r+1].a-1])-v3.begin());
      |                                                                                              ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from event2.cpp:3:
/usr/include/c++/10/bits/stl_algo.h:3474:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)'
 3474 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3474:5: note:   template argument deduction/substitution failed:
event2.cpp:181:94: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
  181 |             g[a[i].c]=min(g[a[i].c],lower_bound(v3.begin(),v3.end(),v[a[r+1].a-1])-v3.begin());
      |                                                                                              ^