# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
558056 | 2022-05-06T16:05:29 Z | groshi | Cave (IOI13_cave) | C++17 | 0 ms | 0 KB |
#include<iostream> #include<vector> using namespace std; bool nwm[5010]; int s1[5010],d1[5010];///s to w ktora strone dobry pstryczek, d1 to ktore drzwi otwiera /*int tryCombination(vector<int> Q) { for(int i=0;i<Q.size();i++) cout<<Q[i]<<" "; int x; cin>>x; return x; }*/ void exploreCave(int n) { for(int i=0;i<n;i++) { vector<int> chce; for(int j=0;j<n;j++) { if(nwm[j]==0) chce.push_back(0); else chce.push_back(s1[j]); } //cout<<"wstepnie "; int k=tryCombination(chce); int on; if(k!=i)///to znaczy ze s1[i]=0; on=0; else on=1; //cout<<"drzwi "<<i<<" maja "<<on<<"\n"; int pocz=0,kon=n,sre,ostd; while(pocz<kon) { //cout<<"sprawdzam przedzial "<<pocz<<" "<<kon<<"\n"; sre=(pocz+kon)/2; chce.clear(); for(int j=0;j<n;j++) { if(nwm[j]==1) chce.push_back(s1[j]); else{ if(j<pocz || j>sre) chce.push_back(on); else chce.push_back(!on); } } int k=tryCombination(chce); if(k==i) { //cout<<"w przedziale\n"; kon=sre; ostd=sre; } else { //cout<<"poza przedzialem\n"; pocz=sre+1; } } s1[ostd]=on; d1[ostd]=i; nwm[ostd]=1; } vector<int> s; for(int i=0;i<n;i++) s.push_back(s1[i]); vector<int> d; for(int i=0;i<n;i++) d.push_back(d1[i]); answer(s,d); /*for(int i=0;i<n;i++) cout<<s1[i]<<" "; cout<<"\n"; for(int i=0;i<n;i++) cout<<d1[i]<<" ";*/ }