问题 J: 困难题
时间限制: 1 Sec 内存限制: 128 MB
提交: 45 解决: 10
[提交] [状态] [讨论版] [命题人:admin]
题目描述
JATC和他的朋友Giraffe正在他们的房间里解决一些问题。Giraffe在黑板上写了一个数组a1 a2…一个整数,这样1≤a1 < a2 <…<≤10^3,然后去了浴室。
JATC决定通过删除数组中的一些连续元素来捉弄他的朋友Giraffe。因为他不想恶作剧太过火,所以他只会以一种方式进行擦除,这样长颈鹿仍然可以使用剩余元素的信息来恢复数组。因为Giraffe创建了数组,所以他也知道这是一个递增数组,所有元素都是范围[1,10^3]内的整数。
JATC想知道他能擦除的元素最多是多少?
输入
输入的第一行包含一个整数n (1≤n≤100) -数组中元素的数量。
第二行输入包含n个整数的ai (1≤a1 < a2 <⋯<≤10^3)——Giraffe写的数组。
输出
输出一个整数——JATC可以删除的数组中连续元素的最大数量。
如果连一个元素都无法清除,请输出0。
#include
#include
#include
#include
#include
#include
using namespace std;
int a[10000005]={0};
int b[10000]={0};
int main()
{
int i,n,j,k=1;
scanf("%d",&n);
k=1;
int sum=0;
int count;
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(i=1;i<=n;i++)
{
count=1;
for(j=i+1;j<=n;j++)
{
if(a[j]==(a[i]+1))
{
if(a[i]==1)
count++;
if(a[j]==1000)
count++;
count++;
i++;
// printf("%d\n",count);
}
else
break;
}
if(count>=3)
{
b[k++]=count-2;
}
}
sort(b+1,b+k);
printf("%d\n",b[k-1]);
return 0;
}