派"红包"是新年的一种习俗,寓意祝愿和好运。X公司今年盈利颇丰,临近年关去银行取了充足百元现金,为全体员工准备过年红包。年末银行会准备很多连号的人民币供市民使用,X公司也取到了很多连号人民币,并且决定红包里先包这些连号人民币。由于X公司取到的现金较多,需要你编个程序帮助它统计连号人民币张数超过10(包括10)的个数,并输出最长连号人民币。
输入格式:
输入为两行,第一行为一个正整数 n (1≤n≤105),代表百元人民币的张数。
随后一行为n个正整数,分别代表每一张人民币的编号(不超过8位的非负整数),中间用空格隔开。
输出格式:
输出为两行,第一行为一个整数,表示输入序列中连号人民币的张数超过10的序列个数。
第二行按照输入顺序输出最长连号人民币的编号,中间用1个空格分隔,首尾不能有多余空格。最长连号人民币如果有多个,输出最先出现的那个。
输入样例:
10
1 2 3 4 5 6 7 8 9 10
输出样例:
1
1 2 3 4 5 6 7 8 9 10
#include<stdio.h>
#define N 100010
int a[N];
int main()
{
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
int res=0,r=0,length=1,max=0,rmax=0;
for(i=0;i<n;i++)
{
while(a[i+1]-a[i]==1&&i<n)
{
length++;
r++;
i++;
}
if(length>=10)
{
res++;
}
if(length>max)
{
max=length;
rmax=r-length+1;
}
length=1;
r++;
}
printf("%d\n",res);
for(i=rmax;i<max+rmax;i++)
{
printf("%d",a[i]);
if(i<max+rmax-1)printf(" ");
}
}