#include<stdio.h>
#include<math.h>
#include<vector>
using namespace std;
const int num=100010;
const int inf=1e9;
int diamond[num];
int sum[num]={0};
int n,m;
struct node
{
int pre;
int post;
};
vector<node>vc;
int main()
{
//freopen("in.txt","r",stdin);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%d",&diamond[i]);
sum[i]=sum[i-1]+diamond[i];
}
int sub=1e9;
int k=1;
for(int i=1;i<=n;i++)
{
for(int j=k;j<=n;j++)
{
if(sum[j]-sum[i]+diamond[i]>=m)
{
int tmp=sum[j]-sum[i]+diamond[i];
if(tmp-m<sub)
{
sub=tmp-m;
vc.clear();
node p;
p.pre=i;
p.post=j;
vc.push_back(p);
}else if(tmp-m==sub)
{
node p;
p.pre=i;
p.post=j;
vc.push_back(p);
}
k=j;//记下上一轮到达的位置,下一轮从这里开始
break;
}
}
}
vector<node>::iterator it=vc.begin();
for(;it!=vc.end();it++)
printf("%d-%d\n",(*it).pre,(*it).post);
return 0;
}
PAT1044
最新推荐文章于 2022-09-12 20:16:28 发布