Submission #944718

#TimeUsernameProblemLanguageResultExecution timeMemory
944718yeediotMinerals (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; for(int i=1;i<=2*n;i++){ if(Query(i)==prev+1){ prev++; temp.pb(i); } else{ cur2.pb(i); } } 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 len=r-l+1; if(flag2){ mm=max(l,min(r-1,l+int(0.5*len))); } else{ mm=min(r-1,max(l,l+int(0.5*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: 2n+nlogn+1/2(nlogn) */

Compilation message (stderr)

minerals.cpp: In function 'void Solve(int)':
minerals.cpp:73:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   73 |         auto [cur,l,r,flag2]=Q.front();
      |              ^
minerals.cpp:81:13: error: 'mm' was not declared in this scope; did you mean 'tm'?
   81 |             mm=max(l,min(r-1,l+int(0.5*len)));
      |             ^~
      |             tm
minerals.cpp:84:13: error: 'mm' was not declared in this scope; did you mean 'tm'?
   84 |             mm=min(r-1,max(l,l+int(0.5*len)));
      |             ^~
      |             tm
minerals.cpp:88:23: error: 'mm' was not declared in this scope; did you mean 'tm'?
   88 |             for(int i=mm+1;i<=r;i++){
      |                       ^~
      |                       tm
minerals.cpp:93:28: error: 'mm' was not declared in this scope; did you mean 'tm'?
   93 |             for(int i=l;i<=mm;i++){
      |                            ^~
      |                            tm
minerals.cpp:109:25: error: 'mm' was not declared in this scope; did you mean 'tm'?
  109 |             Q.push({L,l,mm,1});
      |                         ^~
      |                         tm
minerals.cpp:109:30: error: no matching function for call to 'std::queue<std::tuple<std::vector<int, std::allocator<int> >, int, int, bool> >::push(<brace-enclosed initializer list>)'
  109 |             Q.push({L,l,mm,1});
      |                              ^
In file included from /usr/include/c++/10/queue:64,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:86,
                 from minerals.cpp:1:
/usr/include/c++/10/bits/stl_queue.h:265:7: note: candidate: 'void std::queue<_Tp, _Sequence>::push(const value_type&) [with _Tp = std::tuple<std::vector<int, std::allocator<int> >, int, int, bool>; _Sequence = std::deque<std::tuple<std::vector<int, std::allocator<int> >, int, int, bool>, std::allocator<std::tuple<std::vector<int, std::allocator<int> >, int, int, bool> > >; std::queue<_Tp, _Sequence>::value_type = std::tuple<std::vector<int, std::allocator<int> >, int, int, bool>]'
  265 |       push(const value_type& __x)
      |       ^~~~
/usr/include/c++/10/bits/stl_queue.h:265:30: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type&' {aka 'const std::tuple<std::vector<int, std::allocator<int> >, int, int, bool>&'}
  265 |       push(const value_type& __x)
      |            ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_queue.h:270:7: note: candidate: 'void std::queue<_Tp, _Sequence>::push(std::queue<_Tp, _Sequence>::value_type&&) [with _Tp = std::tuple<std::vector<int, std::allocator<int> >, int, int, bool>; _Sequence = std::deque<std::tuple<std::vector<int, std::allocator<int> >, int, int, bool>, std::allocator<std::tuple<std::vector<int, std::allocator<int> >, int, int, bool> > >; std::queue<_Tp, _Sequence>::value_type = std::tuple<std::vector<int, std::allocator<int> >, int, int, bool>]'
  270 |       push(value_type&& __x)
      |       ^~~~
/usr/include/c++/10/bits/stl_queue.h:270:25: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::queue<std::tuple<std::vector<int, std::allocator<int> >, int, int, bool> >::value_type&&' {aka 'std::tuple<std::vector<int, std::allocator<int> >, int, int, bool>&&'}
  270 |       push(value_type&& __x)
      |            ~~~~~~~~~~~~~^~~
minerals.cpp:112:23: error: 'mm' was not declared in this scope; did you mean 'tm'?
  112 |             Q.push({R,mm+1,r,0});
      |                       ^~
      |                       tm
minerals.cpp:112:32: error: no matching function for call to 'std::queue<std::tuple<std::vector<int, std::allocator<int> >, int, int, bool> >::push(<brace-enclosed initializer list>)'
  112 |             Q.push({R,mm+1,r,0});
      |                                ^
In file included from /usr/include/c++/10/queue:64,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:86,
                 from minerals.cpp:1:
/usr/include/c++/10/bits/stl_queue.h:265:7: note: candidate: 'void std::queue<_Tp, _Sequence>::push(const value_type&) [with _Tp = std::tuple<std::vector<int, std::allocator<int> >, int, int, bool>; _Sequence = std::deque<std::tuple<std::vector<int, std::allocator<int> >, int, int, bool>, std::allocator<std::tuple<std::vector<int, std::allocator<int> >, int, int, bool> > >; std::queue<_Tp, _Sequence>::value_type = std::tuple<std::vector<int, std::allocator<int> >, int, int, bool>]'
  265 |       push(const value_type& __x)
      |       ^~~~
/usr/include/c++/10/bits/stl_queue.h:265:30: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type&' {aka 'const std::tuple<std::vector<int, std::allocator<int> >, int, int, bool>&'}
  265 |       push(const value_type& __x)
      |            ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_queue.h:270:7: note: candidate: 'void std::queue<_Tp, _Sequence>::push(std::queue<_Tp, _Sequence>::value_type&&) [with _Tp = std::tuple<std::vector<int, std::allocator<int> >, int, int, bool>; _Sequence = std::deque<std::tuple<std::vector<int, std::allocator<int> >, int, int, bool>, std::allocator<std::tuple<std::vector<int, std::allocator<int> >, int, int, bool> > >; std::queue<_Tp, _Sequence>::value_type = std::tuple<std::vector<int, std::allocator<int> >, int, int, bool>]'
  270 |       push(value_type&& __x)
      |       ^~~~
/usr/include/c++/10/bits/stl_queue.h:270:25: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::queue<std::tuple<std::vector<int, std::allocator<int> >, int, int, bool> >::value_type&&' {aka 'std::tuple<std::vector<int, std::allocator<int> >, int, int, bool>&&'}
  270 |       push(value_type&& __x)
      |            ~~~~~~~~~~~~~^~~