zcmu 1617补提交

    xiaoxiao2025-01-11  7

    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); } } }

    转载请注明原文地址: https://ju.6miu.com/read-1295358.html
    最新回复(0)