2个RE8个WA
查看原帖
2个RE8个WA
1356485
wai_xing_sheng_wu楼主2024/10/29 17:25
#include<bits/stdc++.h>
using namespace std;
int m,k;
int b[509];
vector<pair<int,int> > a;
bool pd(int num)
{
    int s=0,p=k;
    for(int i=m;i>=1;i--)
    {
        if(b[i]>num)return 0;
        if(s+b[i]<=num)s+=b[i];
        else
        {
            if(p<=1)return 0;
            p--;
            s=b[i];
        }
    }
    if(p>=1)return 1;
    return 0;
}
void get(int num)
{
    int last=m,p=k,s=0;
    for(int i=m;i>=1;i--)
    {
        if(s+b[i]>num)
        {
            p--;
            a.push_back(make_pair(i+1,last));
            last=i;
            s=b[i];
        }
        else
        {
            s+=b[i];
        }
    }
}
int main()
{
    cin>>m>>k;
    int sss=0;
    for(int i=1;i<=m;i++)
    {
        cin>>b[i];
        sss+=b[i];
    }
    int l=1,r=sss;
    for(;l<r;)
    {
        int mid=(l+r)/2;
        if(pd(mid)==1)
        {
            r=mid;
        }
        else
        {
            l=mid+1;
        }
    }
    get(r);
    for(int i=k-1;i>=0;i--)
    {
        cout<<a[i].first<<' '<<a[i].second<<endl;
    }
}

2024/10/29 17:25
加载中...