zcmu 1617補提交

1617: 補提交
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 318 Solved: 56
[Submit][Status][Web Board]
Description

TOM給自己定了一個宏偉的目標:連續100天每天堅持在zcmu上提交一個程序。100天過去了,tom查看自己的提交記錄發現有N天因爲貪玩忘記提交了。於是TOM要來M張"補提交卡"。每張"補提交卡"都可以補回一天的提交,將原本沒有提交程序的一天變成有提交程序的一天。tom想知道通過利用這M張補提交卡,可以使自己的"最長連續提交天數"最多變成多少天。
Input

第一行是一個整數T(1 <= T <= 10),代表測試數據的組數。

每個測試數據第一行是2個整數N和M(0 <= N, M <= 100)。第二行包含N個整數,表示第a1, a2, ... aN天TOM沒有提交程序。ai<=100

Output

對於每組數據,輸出通過使用補提交卡TOM的最長連續提交天數最多變成多少。
Sample Input
3 
5 1 
34 77 82 83 84
5 2 
10 30 55 56 90
5 10 
10 30 55 56 90
Sample Output
76
59
100
<span style="background-color: rgb(51, 204, 0);">
<span style="background-color: rgb(51, 255, 51);">自己做題的時候忽略了  對輸入的數據進行排. 測試結果題目給的並不全面</span>;</span>
<span style="background-color: rgb(51, 255, 51);">比如測試4 2        1 5 9 14    就出現了報錯</span>     




#include<stdio.h>
#include<string.h>
int main()
{
	int repeat,i,sum,num,size,flag;
	int a[105],temp,j;
	scanf("%d",&repeat);
	while(repeat--)
	{
		sum=0;
		a[0]=0;//自己定義的標爲0的爲0
		scanf("%d%d",&num,&size);
		for(i=1;i<=num;i++)
			{
				scanf("%d",&a[i]);
			}
		for(i=1;i<num;i++)//對輸入的數據進行排序
			for(j=i+1;j<=num;j++)
			{
				if(a[i]>a[j])
				{
					temp=a[j];
					a[j]=a[i];
					a[i]=temp;
				}
			};
	   if(num<=size)//當補籤卡大於等於漏掉的天數時直接輸出100天
		{
			printf("%d\n",100);
		}
		else//否則開始比較補籤卡
		{
			sum=a[size+1];//注意,此時的a[0]=0從左邊數據開始算起,補籤卡個數的後面一個減去,當前數據,
                                       //比如補籤卡有3個就從第四個數據開始用a[4]-a[0];等於補籤的天數。依次掃描
			for(i=0;i<(num-size);i++)
			{
				sum=sum>(a[size+i+1]-a[i])?sum:(a[size+i+1]-a[i]);
			}
			flag=sum;
			sum=sum>(100-a[num-size])?sum:(100-a[num-size]);//因爲上面沒比較100到補籤卡的天數,所以再算一遍;比如補籤卡2張就100-a[n-2]

           if(sum==100-a[num-size])
           printf("%d\n",sum);
             else
                printf("%d\n",sum-1);
         }
      }
}





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章