第7回日本情報オリンピック 予選3 カードゲーム
やるだけ
つらい
#include <cstdio> using namespace std; int main(){ while(1){ int n; bool t[203],h[203]; scanf("%d",&n); if(n == 0) break; for(int i = 0;i <= n*2;i++){ t[i] = false; h[i] = false; } for(int i = 1;i <= n;i++){ int tmp; scanf("%d",&tmp); t[tmp] = true; } for(int i = 1;i <= n*2;i++){ if(t[i] == false){ h[i] = true; } } int tc = 0,hc = 0,pre = 0; bool ban = true; while(1){ if(tc == n || hc == n) break; if(ban){ for(int i = pre+1;i <= n*2;i++){ if(t[i] == true){ pre = i; t[i] = false; tc++; goto out; } } pre = 0; out: ; ban = !ban; }else{ for(int i = pre+1;i <= n*2;i++){ if(h[i] == true){ pre = i; h[i] = false; hc++; goto hev; } } pre = 0; hev: ; ban = !ban; } } int a=0,b=0; if(tc == n){ a = n - hc; }else{ b = n - tc; } printf("%d\n%d\n",a,b); } return 0; }