#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+10;
int a[2*maxn];
int b[2*maxn];
int c[2*maxn];
int main()
{
    int T; scanf("%d",&T);
    while(T--)
    {
        int n,m;
        long long num=0;
        scanf("%d %d",&n,&m);
        for(int i=1;i<=n;i++) scanf("%d",&a[i]);
        for(int i=1;i<=n;i++) scanf("%d",&b[i]),c[i]=a[i]-b[i],num+=c[i];
        if(m+num<0)
        {
            printf("-1\n");
        }
        else
        {
            long long  num=m;
            int p1=1;
            for(int i=1;i<=n;i++)
            {
                num+=c[i];
                if(num<0)
                {

                    while(num<0)
                    {
                        num-=c[p1];p1++;
                    }

                }
            }
            printf("%d\n",p1);
        }

    }
}
D.cpp

H 的错误代码

#include<bits/stdc++.h>
using namespace std;
double x[105];
double c[105];
double d[105];
pair<double,int> pa[105];
bool up(pair<double,int> px,pair<double,int> py)
{
    return px.second<py.second;
}
int main()
{
    int T; cin>>T;
    while(T--)
    {
        int n,k; cin>>n>>k;
        double r;   cin>>r;
        for(int i=1;i<=k;i++) cin>>x[i];
        while(n--)
        {
            double tot=0;
            for(int i=1;i<=k;i++)
            {
               cin>>c[i];
               d[i]=c[i]-x[i];
               pa[i].first=abs(d[i]); pa[i].second=i;
               tot+=abs(c[i]-x[i]);
            }
            tot=tot-r;//  cout<<tot<<endl;
            sort(pa+1,pa+1+k);
          //  for(int i=1;i<=k;i++) cout<<pa[i].first<<endl;
            int num=k;
            int t=1;
            while(tot>0)
            {
                //cout<<tot/num<<endl;
                if(tot/num<=pa[t].first)
                {
                    for(int i=t;i<=k;i++)
                    {
                        pa[i].first=pa[i].first-tot/num;
                    }
                    break;
                }
                else
                {
                    double nnn=pa[t].first;
                    tot=tot-num*nnn;
                    for(int i=t;i<=k;i++)
                    {
                        pa[i].first=pa[i].first-nnn;
                    }
                    t++;
                    num--;
                }
            }
            //for(int i=1;i<=k;i++) cout<<pa[i].first<<"==="<<endl;
            sort(pa+1,pa+1+k,up);
            //for(int i=1;i<=k;i++) cout<<pa[i].first<<"==="<<endl;
            for(int i=1;i<=k;i++)
            {
                //cout<<abs(abs(d[i])-pa[i].first)<<endl;
                if(d[i]<0) c[i]+=abs(abs(d[i])-pa[i].first);
                else   c[i]-=abs(abs(d[i])-pa[i].first);
                if(i!=1) cout<<" ";
                cout<<c[i];
            }
            cout<<endl;

        }
    }
}