(파일 IO) : 입력 : card.in 출력 : card.out
시간 제한 : 1000 MS 공간 제약 : 262,144킬로바이트의 특정 제한
고토 ProblemSet
제목 설명
그녀가 엄지 손가락 않았지만, 매우 카드 소처럼, 그러나 그녀는 카드 놀이의 사랑 거의 강박 관념이있다. 불행하게도, 무리의 다른 가축 좋은 상대가되지 않습니다. 이들의 수준은 정말 나쁜 것입니다. 그들은 놀이 카드를 완전히 예측 가능한 방식으로 항상! 그럼에도 불구하고,
여전히 승리하는 방법을 선택할 수 있습니다.
와 간단한 카드 게임을하는 그녀의 친구 엘지, 그들은 임금 A를 가지고있다
카드 카드, 디지털 숫자 카드가에
및 카드, 둘로 나누어
와 카드
.
그런 다음 그들은 행동의 총 카드 놀이를하기 시작했다
휠, 각 라운드에서,
和
카드, 큰 포인트가 카드를 재생.
마법
예측 될 수있다
카드 순서, 그리고 승리에로있다. 확인
포인트의 최대 수를 획득 할 수있다.
입력
정수 첫 번째 줄을
.
다음
행은
연속 게임 카드를 완성합니다. 이 정보에서 결정하기 쉽다는 것을 유의하시기 바랍니다
카드.
출력
라인이 주어집니다
포인트의 최대 수를 점수 수 있습니다.
샘플 입력
. 3
. 1
. 6
. 4
샘플 출력
2
데이터 범위 제한
팁
카드의 베시의 손은
자신에있어서,
순차 2 포인트 카드를 얻을 수있다.
문제 해결 아이디어를
욕심.
티안 지의 말의 원칙, 두 질서 큐를 준비합니다.
코드
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cmath>
using namespace std;
int n,m,a[100010],b[50010],c[50010],x,ans,k,k1,j;
int main(){
freopen("card.in","r",stdin);
freopen("card.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
a[x]=1;
}
k=0,k1=0;
for(int i=1;i<=n*2;i++)
if(!a[i])
b[++k]=i;
else
c[++k1]=i;
j=1,ans=0;
for(int i=1;i<=n;i++)
{
if(c[j]<b[i])
{
j++;
ans++;
if(j>n)
{
printf("%d",ans);
return 0;
}
}
}
printf("%d",ans);
}