PTA求改正,不知道为什么错

PTA题目实在不会了,我知道我的方法不好,但还是想知道这种方法这么写哪里错了,求各位帮忙看看,错误的测试点是1000个数据,我把容量扩大了也没用

img

img

img

#include

int lefttime[105]={0},people[105]={0},a[10005]= {0},b[10005]= {0};
int n=0,temp=0,num=0,num2=0,window=0;
int wait[10005]={0},now=0;
double waittime=0;

int check(int i)
{
    for(int k=0;k<window;k++)
    {
        if(lefttime[k]==0&&a[i]!=0)
        {
            n--;
            lefttime[k]+=b[num2++];
            a[i]--;
            people[k]++;
        }
    }
    if(a[i]!=0)
        temp+=a[i];
    for(int k=0;k<window;k++)
    {
        if(lefttime[k]==0&&temp!=0)
        {
            n--;
            lefttime[k]+=b[num2++];
            temp--;
            now++;
            people[k]++;
        }
    }
    
    
    int tag=1;
    for(int i=0;i<window;i++)
    {
        if(lefttime[i]>60)
            lefttime[i]=60;
        if(lefttime[i]!=0)
        {
            lefttime[i]--;
            tag=0;
        }
    }
    for(int i=now;i<temp+now;i++)
    {
        wait[i]++;
    }
    waittime+=temp;
    return tag;
}
int main()
{
    int time,work,i;
    scanf("%d",&n);
    int n2 = n;
    for(i=0; itime,&work);
        a[time]++;
        b[num++]=work;
    }
    scanf("%d",&window); 
    for(i=0;;i++)
    {
        if(check(i)&&n==0)
            break;
    }
    int max = 0;
    for(int j=0;jif(wait[j]>max)
            max=wait[j];
    }
    printf("%.1lf %d ",waittime/n2,max);
    printf("%d\n",i);
    for(int j=0;j<window-1;j++)
    {
        printf("%d ",people[j]);
    }
    printf("%d",people[window-1]);
}

#include<bits/stdc++.h>
using namespace std;
vector<vector<int> >widow(2,vector<int>(10)); 
int wids;
int findok(int arri)
{
    int minn=0;
    for(int i=0;i<wids;i++)
    {
        if(widow[0][i]<arri)widow[0][i]=arri;
        if(widow[0][minn]>widow[0][i])minn=i;
    }
    widow[1][minn]++;
    return minn;
}
int main()
{
    int peo;cin>>peo;int peoo=peo;
    int waitz=0,maxtime=0,maxwait=0;
    vector<vector<int> >hum(2);
    while(peo--)
    {
        int work,arrive;cin>>arrive>>work;
        if(work>60)work=60;
        hum[0].push_back(arrive);
        hum[1].push_back(work);
    }
    cin>>wids;
    for(int i=0;i<hum[0].size();i++)
    {
        int minn=findok(hum[0][i]);
        int wait=widow[0][minn]-hum[0][i];
        if(wait>0)waitz+=wait;
        if(wait>maxwait)maxwait=wait;
        widow[0][minn]+=hum[1][i];
    }
    for(int i=0;i<wids;i++)
    {
        maxtime=max(widow[0][i],maxtime);
    }
    printf("%.1f %d %d\n",waitz*1.0/peoo,maxwait,maxtime);
    cout<<widow[1][0];
    for(int i=1;i<wids;i++)
    {
        cout<<" "<<widow[1][i];
    }
}