题解:AT_joi2008yo_c カードゲーム
_qumingnan_ · · 题解
题目跳楼机
正文开始:
阅读理解
有
现给出小
思路:
注意到这道题的范围是
代码实现:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,x,i,j;
bool t[1005];
int a[1105],tt1,b[1205],tt2,id;
signed main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>n;
for(i=1;i<=n;i++)cin>>x,t[x]=1;
for(i=1;i<=2*n;i++)t[i]?a[++tt1]=i:b[++tt2]=i;//统计两人卡牌
while(tt1&&tt2){//有一方已经没牌了就退出
x=0,i=1,j=1;//x 为最大值
while(i<=n&&j<=n&&tt1&&tt2){//有一方已经不能出牌了就退出
if(id==0)
for(;i<=n;i++){if(a[i]>x){x=a[i],a[i]=0,tt1--;break;}}//寻找符合要求的牌
else
for(;j<=n;j++)if(b[j]>x){x=b[j],b[j]=0,tt2--;break;}//寻找符合要求的牌
id++,id%=2;//换人
}
}
cout<<tt2<<'\n'<<tt1<<'\n';//输出对方剩余的牌数
return 0;
}