pta1014 Waiting in Line 测试点2,4,5不过


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct node{
        int pop;
        int front;
        int qe[15];
        int rear;
    }a[25];
int cmp ( const void *a , const void *b )  
{ 
    return (*(struct node *)a).pop - (*(struct node *)b).pop; 
}
int main()
{
    
    int n,m,k,q,j,i;
    scanf("%d %d %d %d",&n,&m,&k,&q);
    int x[k+5],b[q+5],t[1000+5],end[1000+5];
    for(i=1;i<=k;i++){
        scanf("%d",&x[i]);
    }
    for(i=1;i<=q;i++){
        scanf("%d",&b[i]);
    }
    if(n>k){
        for(i=1;i<=k;i++)
        t[i]=x[i];
        for(i=1;i<=q;i++){
        if(t[b[i]]<=540){
        int h=t[b[i]]/60;
        int min=t[b[i]]-h*60;
        printf("%02d",h+8);
        printf(":");
        if(min>0)
        printf("%02d\n",min);
        if(min==0)
        printf("00\n");
    }
        else printf("Sorry\n");
    }}
    else{
    for(i=0;i<n;i++){
        a[i].front=0;
        a[i].rear=m-1;
    }
    for(i=1;i<=n*m;i++){
        int r,y;
        if(i%n==0){
            r=n-1;
            y=i/n-1;
        }
        if(i%n!=0){
        r=i%n-1;
        y=i/n;}
        a[r].qe[y]=x[i];
        a[r].pop=a[r].qe[0];
        int sum=0;
        for(j=0;j<=y;j++){
            sum=sum+a[r].qe[j];
        }
        t[i]=sum;
        end[i]=sum-a[r].qe[a[r].rear];
    }
    
    for(i=n*m+1;i<=k;i++){
        qsort(a,n,sizeof(a[0]),cmp);
        a[0].front++;
        a[0].pop=a[0].qe[a[0].front];
        a[0].qe[++a[0].rear]=x[i];
        int s=0;
        for(j=0;j<=a[0].rear;j++){
            s=s+a[0].qe[j];
            }
        t[i]=s;
        end[i]=s-a[0].qe[a[0].rear];
    }
    for(i=1;i<=q;i++){
        if(end[b[i]]<540){
        int h=t[b[i]]/60;
        int min=t[b[i]]-h*60;
        printf("%02d",h+8);
        printf(":");
        if(min>0)
        printf("%02d\n",min);
        if(min==0)
        printf("00\n");
    }
        else printf("Sorry\n");
    }}
    
}

自己测试过的数据:
2 2 7 5
1 2 6 4 3 533 129
3 4 5 6 7
输出
08:07
08:06
08:10
16:59
19:08
输入:
20 20 1 1
8
1
输出:
08:08
测试样例可通过。