AOJ 0523: Card Game
太郎が持っている:1
花子が持っている:0
残ってない:-1
のようにすると、配列1つと単純なループで解くことができます。(入出力も簡単)
#include<iostream> #include<cstring> using namespace std; int card[200]; int main(){ int n; while(cin>>n,n){ memset(card,0,sizeof(card)); for(int i = 0; i < n; i++){ int a; cin>>a; card[a-1] = 1; } int a[2] = {n,n}; bool flag = 1,p = 1;//p = 1のとき太郎、p = 2のとき花子番 while(flag){ for(int i = 0; i < 2*n && flag; i++){ if(card[i]==p){ card[i] = -1; flag = --a[p]; p = !p; } } p = !p;//ゲームが続いているなら、パスしてるはずなので手番を入れ替える } cout<<a[0]<<'\n'<<a[1]<<endl; } return 0; }