제출 #131989

#제출 시각아이디문제언어결과실행 시간메모리
131989dvdg6566콤보 (IOI18_combo)C++14
0 / 100
2 ms456 KiB
#include "combo.h" #include<bits/stdc++.h> using namespace std; #define pb emplace_back #define mp make_pair #define ALL(x) x.begin(), x.end() #define SZ(x) (int)x.size() char ltrs[] = {'A', 'B', 'X', 'Y'}; vector<char> out; string guess_sequence(int N) { // cout<<N<<'\n'; int a = press("AB"); int b = press("AX"); if(a&&b)out.pb('A'); if (a&&!b)out.pb('B'); if (!a&&b)out.pb('X'); if(!a&&!b)out.pb('Y'); vector<char> V; for (int i=0;i<4;++i)if(ltrs[i] != out[0])V.pb(ltrs[i]); for (int x=2;x<N;++x){ string q = ""; for (auto i : out)q+=i; q += V[0]; q += V[0]; for (auto i : out)q+=i; q += V[0]; q += V[1]; for (auto i : out)q+=i; q += V[0]; q += V[2]; for (auto i : out)q+=i; q += V[1]; // cout<<q<<'\n';4 int res = press(q); // cout<<res<<' '<<x<<'\n'; if (res == x-1){ out.pb(V[2]); }else if (res == x+1){ out.pb(V[0]); }else{ out.pb(V[1]); } assert(SZ(out)== x); assert(x<N&&SZ(out)<N); } assert(SZ(out) > N-1); string ret = ""; for (auto i : out)ret += i; ret += V[0]; if (press(ret) == N)return ret; ret = ""; for (auto i : out)ret += i; ret += V[1]; if (press(ret) == N)return ret; ret = ""; for (auto i : out)ret += i; ret += V[2]; if (press(ret) == N)return ret; assert(0); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...