Submission #944781

#TimeUsernameProblemLanguageResultExecution timeMemory
944781yeediotMinerals (JOI19_minerals)C++14
Compilation error
0 ms0 KiB
#include<bits/stdc++.h> using namespace std; #define F first #define S second #define all(x) x.begin(),x.end() #define pii pair<int,int> #define pb push_back #define sz(x) (int)(x.size()) #define chmin(x,y) x=min(x,y) #define chmax(x,y) x=max(x,y) #define vi vector<int> #define vp vector<pii> #define vvi vector<vi> const int mxn=43000; #ifdef local void setio(){freopen("/Users/iantsai/Library/Mobile Documents/com~apple~CloudDocs/cpp/Empty.md","r",stdin);} set<int>cur; int color[mxn]; int cnt[mxn]; int n; bool ok; int tt=0; void init(){ cin>>n; for(int i=1;i<=2*n;i++){ cin>>color[i]; } } int res; int Query(int x){ tt++; if(cur.find(x)!=cur.end()){ cur.erase(x); cnt[color[x]]--; if(cnt[color[x]]==0)res--; } else{ cur.insert(x); cnt[color[x]]++; if(cnt[color[x]]==1)res++; } return res; } void Answer(int a,int b){ if(a>b)swap(a,b); cout<<a<<' '<<b<<'\n'; if(color[a]!=color[b]){ ok=0; } } #else void setio(){} #include "minerals.h" #endif ////////////////// vector<int>cur2; void Solve(int n){ vector<int>temp; int prev=0; vector<int>ord(2*n); for(int i=1;i<=2*n;i++){ ord[i-1]=i; } mt19937_64 rng(time(NULL)); shuffle(all(ord),rng()); for(int i=2*n;i>=1;i--){ int x=ord[i-1]; if(prev<=n and Query(x)==prev+1){ prev++; temp.pb(x); } else{ cur2.pb(x); } } queue<tuple<vector<int>,int,int,bool>>Q; Q.push({temp,0,n-1,1}); while(sz(Q)){ auto [cur,l,r,flag2]=Q.front(); Q.pop(); if(l==r){ Answer(cur[0],cur2[l]); continue; } int mm; int len=(r-l)*0.37; if(flag2){ mm=max(l,min(r-1,r-len)); } else{ mm=min(r-1,max(l,l+len)); } int dick; if(flag2){ for(int i=mm+1;i<=r;i++){ dick=Query(cur2[i]); } } else{ for(int i=l;i<=mm;i++){ dick=Query(cur2[i]); } } vector<int>L,R; for(auto i:cur){ int x=Query(i); if(x==dick){ L.pb(i); } else{ R.pb(i); } dick=x; } if(sz(L)){ Q.push({L,l,mm,1}); } if(sz(R)){ Q.push({R,mm+1,r,0}); } } } #ifdef local int main(){ ok=1; tt=0; setio(); init(); Solve(n); cout<<tt<<'\n'; if(ok)cout<<"Accepted!\n"; else cout<<"Wrong Answer\n"; } #else #endif /* input: /////////////// /////// // / / / */

Compilation message (stderr)

minerals.cpp: In function 'void Solve(int)':
minerals.cpp:80:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   80 |         auto [cur,l,r,flag2]=Q.front();
      |              ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from minerals.cpp:1:
/usr/include/c++/10/bits/stl_algo.h: In instantiation of 'void std::shuffle(_RAIter, _RAIter, _UGenerator&&) [with _RAIter = __gnu_cxx::__normal_iterator<int*, std::vector<int> >; _UGenerator = long unsigned int]':
minerals.cpp:66:27:   required from here
/usr/include/c++/10/bits/stl_algo.h:3769:2: error: 'std::remove_reference<long unsigned int>::type' {aka 'long unsigned int'} is not a class, struct, or union type
 3769 |  __uc_type;
      |  ^~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:3797:37: error: 'std::remove_reference<long unsigned int>::type' {aka 'long unsigned int'} is not a class, struct, or union type
 3797 |    const pair<__uc_type, __uc_type> __pospos =
      |                                     ^~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:3797:37: error: 'std::remove_reference<long unsigned int>::type' {aka 'long unsigned int'} is not a class, struct, or union type