제출 #738091

#제출 시각아이디문제언어결과실행 시간메모리
738091nicolaev콤보 (IOI18_combo)C++14
100 / 100
41 ms580 KiB
#include <bits/stdc++.h> using namespace std; #define mod 1000000007 #define ll long long #define all(v) v.begin(), v.end() #define fr(n) for(ll i=0;i<n;++i) #define ctz(x) __builtin_ctzll(x) #define clz(x) __builtin_clzll(x) #define pcount(x) __builtin_popcountll(x) const int dx[] = {-1, 0, 1, 0}; const int dy[] = {0, 1, 0, -1}; // #define cin fin // #define cout fout // ifstream fin // ofstream fout //const ll maxn = 3e5 + 5; //int f[maxn],nf[maxn],inv[maxn]; //const int M=998244353; //void init(){ //inv[1]=1; for (int i=2;i<maxn;i++) inv[i]=M-1ll*(M/i)*inv[M%i]%M; //f[0]=nf[0]=1; for (int i=1;i<maxn;i++) f[i]=1ll*f[i-1]*i%M,nf[i]=1ll*nf[i-1]*inv[i]%M; //} //int C(int x,int y){return 1ll*f[x]*nf[y]%M*nf[x-y]%M;} int press(string p); string guess_sequence(int n){ string fs=""; vector<string> v = {"A", "B", "X", "Y"}; // string first; int temp=press("AB"); if(temp){ int temp2=press("A"); if(temp2) fs="A"; else fs="B"; } else{ int temp2=press("X"); if(temp2) fs="X"; else fs="Y"; } for(ll i=0; i<4; i++){ if(v[i]==fs){ v.erase(v.begin()+i); } } if(n==1) return fs; ll cnt=2; n-=2; while(n--){ string ns=fs+v[0]+fs+v[1]+v[0]+fs+v[1]+v[1]+fs+v[1]+v[2]; temp=press(ns); if(temp==cnt) fs+=v[0]; else if(temp==cnt+1) fs+=v[1]; else fs+=v[2]; cnt++; } temp=press(fs+v[0]+fs+v[1]); if(temp==cnt){ temp=press(fs+v[0]); if(temp==cnt){ fs+=v[0]; } else fs+=v[1]; } else fs+=v[2]; return fs; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...