比赛 |
ZLXSCDay2 |
评测结果 |
AAAAAAAAAAAAAAA |
题目名称 |
卡牌游戏(白金组) |
最终得分 |
100 |
用户昵称 |
葳棠殇 |
运行时间 |
0.963 s |
代码语言 |
C++ |
内存使用 |
2.60 MiB |
提交时间 |
2016-04-10 15:09:24 |
显示代码纯文本
#include <set>
#include <cstdio>
using namespace std;
set<int>s,t;
int a[200010],f[200010],g[200010];
bool b[200010];
int n,Ans;
int main(){
freopen("cardgame.in","r",stdin);
freopen("cardgame.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]),b[a[i]]=true;
for(int i=1;i<=n<<1;i++)if(!b[i])s.insert(i),t.insert(-i);
for(int i=1;i<=n;i++){
set<int>::iterator it=s.lower_bound(a[i]);
if(it!=s.end())s.erase(it),f[i]=f[i-1]+1;
else f[i]=f[i-1];
}
for(int i=n;i;i--){
set<int>::iterator it=t.lower_bound(-a[i]);
if(it!=t.end())t.erase(it),g[i]=g[i+1]+1;
else g[i]=g[i+1];
}
for(int i=0;i<=n;i++)if(Ans<f[i]+g[i+1])Ans=f[i]+g[i+1];
printf("%d\n",Ans);
}