5779: 英雄卡
时间限制: 1 Sec 内存限制: 128 MB提交: 256 解决: 65
[ 提交][ 状态][ 讨论版][命题人: admin]
题目描述
小李非常迷恋收集各种干脆面里面的英雄卡,为此他曾经连续一个月都只吃干脆面这一种零食,但是有些稀有英雄卡真的是太难收集到了。后来某商场搞了一次英雄卡兑换活动,只要你有三张编号连续的英雄卡,你就可以换任意编号的英雄卡。小李想知道他最多可以换到几张英雄卡(新换来的英雄卡不可以再次兑换)。
输入
第一行,共一个整数n(1<=n<=10000),表示小李拥有的英雄卡数。
第二行,共n个空格隔开的数字ai(1<=ai<=100000),表示英雄卡的编号。
第二行,共n个空格隔开的数字ai(1<=ai<=100000),表示英雄卡的编号。
输出
输出仅有一行,共1个整数,表示小李最多可以换到的英雄卡。
样例输入
6
3 1 2 4 4 5
样例输出
1
提示
1 2 3三张编号连续,可以换一张,换完后剩下4 4 5,不符合兑换规则,无法继续兑换。
来源
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
int n, a[100005], ans=0, maxx=0;
memset(a, 0, sizeof(a));
scanf("%d", &n);
for(int i=0;i<n;i++)
{
int x;
scanf("%d", &x);
a[x]++;
maxx=max(maxx, x);
}
for(int i=1;i<=maxx-2;i++)
{
int temp=min(a[i], min(a[i+1], a[i+2]));
ans+=temp;
a[i+1]-=temp;
a[i+2]-=temp;
}
printf("%d\n", ans);
return 0;
}
/**************************************************************
Problem: 5779
User: ldu_reserver201701
Language: C++
Result: 正确
Time:20 ms
Memory:1364 kb
****************************************************************/