Submission #759078

#TimeUsernameProblemLanguageResultExecution timeMemory
759078FidiskCave (IOI13_cave)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #include "cave.h" using namespace std; #define edge(xxxx,yyyy) ((xxxx)*(m+5)+(yyyy)) #define oo 1e18 #define fi first #define se second #define sp(iiii) setprecision(iiii) #define IO ios_base::sync_with_stdio(false); cin.tie(0) #define ms(aaaa,xxxx) memset(aaaa,xxxx,sizeof(aaaa)) #define cntbit(xxxx) __builtin_popcount(xxxx) #define getbit(xxxx,aaaa) (((xxxx)>>((aaaa)-1))&1) #define totbit(xxxx) (32-__builtin_clz(xxxx)) #define totbitll(xxxx) (64-__builtin_clzll(ll(xxxx))) typedef long double ld; typedef long long ll; typedef unsigned long long ull; typedef pair<int,int> pii; typedef pair<pair<int,int>,int> piii; typedef pair<long long,long long> pll; typedef pair<pair<long long,long long>,long long> plll; typedef pair<pair<long long,long long>,pair<long long,long long>> pllll; typedef pair<pair<long long,long long>,bool> pllb; const ll base=333333349; const ll mod=1e9+7; const ld eps=1e-5; const ll maxn=50009; vector<pii> correctPart,stablePart,questionPart,inversePart; vector<int> ans1,ans2,queryVect; /* int tryCombination(vector<int> ans) { for (int i=0;i<ans.size();i++) { cout<<ans[i]<<' '; } cout<<'\n'; //cout<<"Query completed!\n"; int kq; cin>>kq; return kq; } void answer(vector<int> x,vector<int> y) { for (int i=0;i<x.size();i++) { cout<<x[i]<<' '; } cout<<'\n'; for (int i=0;i<y.size();i++) { cout<<y[i]<<' '; } cout<<'\n'; } */ int query() { //cout<<"We're here 2\n"; //return 0; int k=correctPart.size(); for (int i=0;i<k;i++) { queryVect[correctPart[i].fi]=correctPart[i].se; } k=stablePart.size(); for (int i=0;i<k;i++) { queryVect[stablePart[i].fi]=stablePart[i].se; } k=questionPart.size(); for (int i=0;i<k;i++) { queryVect[questionPart[i].fi]=questionPart[i].se; } k=inversePart.size(); for (int i=0;i<k;i++) { queryVect[inversePart[i].fi]=inversePart[i].se^1; } k=tryCombination(queryVect); //cout<<k<<'\n'; if (k<0) { return 5001; } return k; } void exploreCave(int n) { int m=n; correctPart.clear(); stablePart.clear(); questionPart.clear(); inversePart.clear(); queryVect.resize(n); for (int i=0;i<n;i++) { questionPart.push_back({i,0}); } while (m>0) { int p=n-m; int k=questionPart.size(); //cout<<"We're here\n"; //return; //cout<<p<<"Reset\n"; if (query()==p) { //cout<<"Flip!\n"; for (int i=0;i<k;i++) { questionPart[i].se^=1; } } //for (int i=0;i<k;i++) { // cout<<questionPart[i].fi<<"|"<<questionPart[i].se<<' '; //} //cout<<'\n'; while (k>1) { for (int i=0;i<k/2;i++) { inversePart.push_back(questionPart.back()); questionPart.pop_back(); } if (query()==p) { k=questionPart.size(); for (int i=0;i<k;i++) { stablePart.push_back(questionPart.back()); questionPart.pop_back(); } swap(questionPart,inversePart); } else { k=inversePart.size(); for (int i=0;i<k;i++) { stablePart.push_back(inversePart.back()); inversePart.pop_back(); } } k=questionPart.size(); } correctPart.push_back(questionPart.back()); //cout<<correctPart.back().fi<<' '<<correctPart.back().se<<'\n'; questionPart.clear(); swap(questionPart,stablePart); m--; } ans1.resize(n); ans2.resize(n); for (int i=0;i<n;i++) { ans2[correctPart[i].fi]=i; } for (int i=0;i<n;i++) { ans1[correctPart[i].fi]=correctPart[i].se; } answer(ans1,ans2); }

Compilation message (stderr)

cave.cpp: In function 'int query()':
cave.cpp:78:22: error: cannot convert 'std::vector<int>' to 'int*'
   78 |     k=tryCombination(queryVect);
      |                      ^~~~~~~~~
      |                      |
      |                      std::vector<int>
In file included from cave.cpp:2:
cave.h:8:24: note:   initializing argument 1 of 'int tryCombination(int*)'
    8 | int tryCombination(int S[]);
      |                    ~~~~^~~
cave.cpp: In function 'void exploreCave(int)':
cave.cpp:151:12: error: cannot convert 'std::vector<int>' to 'int*'
  151 |     answer(ans1,ans2);
      |            ^~~~
      |            |
      |            std::vector<int>
In file included from cave.cpp:2:
cave.h:9:17: note:   initializing argument 1 of 'void answer(int*, int*)'
    9 | void answer(int S[], int D[]);
      |             ~~~~^~~