Submission #1171196
Source Code Expand
#include <algorithm> #include <iostream> #include <sstream> #include <string> #include <cstring> #include <vector> #include <queue> #include <set> #include <map> #include <cstdio> #include <cstdlib> #include <cctype> #include <cmath> #include <list> #include <cassert> #include <ctime> #include <climits> using namespace std; #define PB push_back #define MP make_pair #define SZ(v) ((int)(v).size()) #define FOR(i,a,b) for(int i=(a);i<(b);++i) #define REP(i,n) FOR(i,0,n) #define FORE(i,a,b) for(int i=(a);i<=(b);++i) #define REPE(i,n) FORE(i,0,n) #define FORSZ(i,a,v) FOR(i,a,SZ(v)) #define REPSZ(i,v) REP(i,SZ(v)) typedef long long ll; typedef unsigned long long ull; ll gcd(ll a,ll b) { return b==0?a:gcd(b,a%b); } const int MAXN=4000; int nhonest,nunkind,n; vector<int> unknown; int ans[MAXN]; int q[MAXN],qhead,qtail; int chead[MAXN],cnxt[MAXN]; bool test(int a,int b) { printf("? %d %d\n",a,b); fflush(stdout); char c; scanf(" %c",&c); return c=='Y'; } int solve(vector<int> opt) { if(SZ(opt)==0) return -1; if(SZ(opt)==1) return opt[0]; vector<int> nopt; for(int i=0;i+1<SZ(opt);i+=2) { int a=opt[i],b=opt[i+1]; if(!test(a,b)) { unknown.PB(a); unknown.PB(b); continue; } if(!test(b,a)) { ans[a]=0; q[qhead++]=a; unknown.PB(b); continue; } nopt.PB(a); cnxt[b]=chead[a]; chead[a]=b; } int ret=solve(nopt); if(SZ(opt)%2==1) { int a=opt[SZ(opt)-1]; if(ret==-1) ret=a; else unknown.PB(a); } return ret; } void run() { scanf("%d%d",&nhonest,&nunkind); n=nhonest+nunkind; if(nunkind>=nhonest) { printf("Impossible\n"); fflush(stdout); return; } vector<int> opt; REP(i,n) opt.PB(i); REP(i,n) chead[i]=-1,ans[i]=-1; unknown.clear(); qhead=qtail=0; int honest=solve(opt); assert(honest!=-1); ans[honest]=1; q[qhead++]=honest; REPSZ(i,unknown) { int a=unknown[i]; ans[a]=test(honest,a)?1:0; q[qhead++]=a; } while(qtail<qhead) { int at=q[qtail++]; for(int to=chead[at];to!=-1;to=cnxt[to]) { ans[to]=ans[at]; q[qhead++]=to; } } printf("! "); REP(i,n) printf("%d",ans[i]); puts(""); fflush(stdout); } int main() { run(); return 0; }
Submission Info
Submission Time | |
---|---|
Task | F - HonestOrUnkind |
User | krijgertje |
Language | C++14 (GCC 5.4.1) |
Score | 1300 |
Code Size | 2217 Byte |
Status | AC |
Exec Time | 236 ms |
Memory | 852 KB |
Compile Error
./Main.cpp: In function ‘bool test(int, int)’: ./Main.cpp:44:25: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] char c; scanf(" %c",&c); return c=='Y'; ^ ./Main.cpp: In function ‘void run()’: ./Main.cpp:68:33: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%d%d",&nhonest,&nunkind); n=nhonest+nunkind; ^
Judge Result
Set Name | All | ||
---|---|---|---|
Score / Max Score | 1300 / 1300 | ||
Status |
|
Set Name | Test Cases |
---|---|
All | 000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, 022.txt, 023.txt, 024.txt, 025.txt, 026.txt, 027.txt, 028.txt, 029.txt, 030.txt, 031.txt, 032.txt, 033.txt, 034.txt, 035.txt, 036.txt, 037.txt, 038.txt, 039.txt, 040.txt, 041.txt, 042.txt, 043.txt, 044.txt, 045.txt, 046.txt, 047.txt, 048.txt, 049.txt, 050.txt, 051.txt, 052.txt, 053.txt, 054.txt, 055.txt, 056.txt, 057.txt, 058.txt, 059.txt, 060.txt, 061.txt, 062.txt, 063.txt, 064.txt, 065.txt, 066.txt, 067.txt, 068.txt, 069.txt, 070.txt, 071.txt, 072.txt, 073.txt, 074.txt, 075.txt, 076.txt, 077.txt, 078.txt, 079.txt, 080.txt, 081.txt, 082.txt, 083.txt, 084.txt, 085.txt, 086.txt, 087.txt, 088.txt, 089.txt, 090.txt, 091.txt, 092.txt, 093.txt, 094.txt, 095.txt, 096.txt, 097.txt, 098.txt, 099.txt, 100.txt, 101.txt, 102.txt, 103.txt, 104.txt, 105.txt, 106.txt, 107.txt, 108.txt, 109.txt, 110.txt, 111.txt, 112.txt, 113.txt, 114.txt, 115.txt, 116.txt, 117.txt, 118.txt, 119.txt, 120.txt, 121.txt, 122.txt, 123.txt, 124.txt, 125.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
000.txt | AC | 3 ms | 720 KB |
001.txt | AC | 3 ms | 716 KB |
002.txt | AC | 3 ms | 636 KB |
003.txt | AC | 3 ms | 720 KB |
004.txt | AC | 3 ms | 680 KB |
005.txt | AC | 3 ms | 720 KB |
006.txt | AC | 3 ms | 720 KB |
007.txt | AC | 3 ms | 720 KB |
008.txt | AC | 3 ms | 720 KB |
009.txt | AC | 3 ms | 680 KB |
010.txt | AC | 13 ms | 720 KB |
011.txt | AC | 207 ms | 848 KB |
012.txt | AC | 141 ms | 844 KB |
013.txt | AC | 3 ms | 720 KB |
014.txt | AC | 3 ms | 720 KB |
015.txt | AC | 3 ms | 716 KB |
016.txt | AC | 3 ms | 720 KB |
017.txt | AC | 3 ms | 720 KB |
018.txt | AC | 3 ms | 720 KB |
019.txt | AC | 3 ms | 720 KB |
020.txt | AC | 3 ms | 716 KB |
021.txt | AC | 3 ms | 720 KB |
022.txt | AC | 3 ms | 680 KB |
023.txt | AC | 12 ms | 624 KB |
024.txt | AC | 229 ms | 848 KB |
025.txt | AC | 141 ms | 744 KB |
026.txt | AC | 3 ms | 720 KB |
027.txt | AC | 3 ms | 716 KB |
028.txt | AC | 3 ms | 692 KB |
029.txt | AC | 3 ms | 724 KB |
030.txt | AC | 3 ms | 720 KB |
031.txt | AC | 3 ms | 720 KB |
032.txt | AC | 3 ms | 720 KB |
033.txt | AC | 3 ms | 716 KB |
034.txt | AC | 3 ms | 720 KB |
035.txt | AC | 3 ms | 716 KB |
036.txt | AC | 12 ms | 720 KB |
037.txt | AC | 236 ms | 844 KB |
038.txt | AC | 143 ms | 720 KB |
039.txt | AC | 3 ms | 720 KB |
040.txt | AC | 3 ms | 720 KB |
041.txt | AC | 3 ms | 716 KB |
042.txt | AC | 3 ms | 720 KB |
043.txt | AC | 3 ms | 716 KB |
044.txt | AC | 3 ms | 720 KB |
045.txt | AC | 3 ms | 720 KB |
046.txt | AC | 3 ms | 716 KB |
047.txt | AC | 3 ms | 720 KB |
048.txt | AC | 3 ms | 720 KB |
049.txt | AC | 13 ms | 624 KB |
050.txt | AC | 231 ms | 852 KB |
051.txt | AC | 146 ms | 720 KB |
052.txt | AC | 3 ms | 720 KB |
053.txt | AC | 3 ms | 724 KB |
054.txt | AC | 3 ms | 724 KB |
055.txt | AC | 3 ms | 640 KB |
056.txt | AC | 3 ms | 720 KB |
057.txt | AC | 3 ms | 720 KB |
058.txt | AC | 3 ms | 636 KB |
059.txt | AC | 3 ms | 720 KB |
060.txt | AC | 3 ms | 720 KB |
061.txt | AC | 3 ms | 592 KB |
062.txt | AC | 12 ms | 724 KB |
063.txt | AC | 230 ms | 848 KB |
064.txt | AC | 143 ms | 724 KB |
065.txt | AC | 3 ms | 724 KB |
066.txt | AC | 3 ms | 632 KB |
067.txt | AC | 3 ms | 724 KB |
068.txt | AC | 3 ms | 716 KB |
069.txt | AC | 3 ms | 720 KB |
070.txt | AC | 3 ms | 716 KB |
071.txt | AC | 3 ms | 724 KB |
072.txt | AC | 3 ms | 680 KB |
073.txt | AC | 3 ms | 720 KB |
074.txt | AC | 3 ms | 720 KB |
075.txt | AC | 12 ms | 592 KB |
076.txt | AC | 231 ms | 848 KB |
077.txt | AC | 139 ms | 848 KB |
078.txt | AC | 3 ms | 636 KB |
079.txt | AC | 3 ms | 720 KB |
080.txt | AC | 3 ms | 720 KB |
081.txt | AC | 3 ms | 720 KB |
082.txt | AC | 3 ms | 716 KB |
083.txt | AC | 3 ms | 720 KB |
084.txt | AC | 3 ms | 720 KB |
085.txt | AC | 3 ms | 724 KB |
086.txt | AC | 3 ms | 720 KB |
087.txt | AC | 3 ms | 720 KB |
088.txt | AC | 12 ms | 720 KB |
089.txt | AC | 233 ms | 844 KB |
090.txt | AC | 143 ms | 716 KB |
091.txt | AC | 3 ms | 724 KB |
092.txt | AC | 3 ms | 720 KB |
093.txt | AC | 3 ms | 716 KB |
094.txt | AC | 3 ms | 720 KB |
095.txt | AC | 3 ms | 720 KB |
096.txt | AC | 3 ms | 724 KB |
097.txt | AC | 3 ms | 720 KB |
098.txt | AC | 3 ms | 716 KB |
099.txt | AC | 3 ms | 720 KB |
100.txt | AC | 3 ms | 720 KB |
101.txt | AC | 13 ms | 592 KB |
102.txt | AC | 222 ms | 848 KB |
103.txt | AC | 133 ms | 720 KB |
104.txt | AC | 3 ms | 636 KB |
105.txt | AC | 3 ms | 720 KB |
106.txt | AC | 3 ms | 684 KB |
107.txt | AC | 3 ms | 716 KB |
108.txt | AC | 3 ms | 716 KB |
109.txt | AC | 3 ms | 720 KB |
110.txt | AC | 3 ms | 724 KB |
111.txt | AC | 3 ms | 720 KB |
112.txt | AC | 3 ms | 720 KB |
113.txt | AC | 3 ms | 720 KB |
114.txt | AC | 13 ms | 716 KB |
115.txt | AC | 231 ms | 848 KB |
116.txt | AC | 142 ms | 848 KB |
117.txt | AC | 3 ms | 720 KB |
118.txt | AC | 3 ms | 720 KB |
119.txt | AC | 3 ms | 720 KB |
120.txt | AC | 3 ms | 716 KB |
121.txt | AC | 3 ms | 720 KB |
122.txt | AC | 3 ms | 600 KB |
123.txt | AC | 3 ms | 720 KB |
124.txt | AC | 3 ms | 720 KB |
125.txt | AC | 3 ms | 716 KB |