1044. Shopping in Mars (25)
2017-04-15 14:16
357 查看
题目:https://www.patest.cn/contests/pat-a-practise/1044
#include<cstdio>
#include<cstring>
using namespace std;
int sum[100010]={0},nearS=100010,N=0,M=0;
//在[L,R)寻找第一个比x大的元素
int upper_bound(int L, int R, int x)
{
int left = L, right = R,mid;
while(left<right)
{
mid = (left+right)/2;
if(sum[mid]>x)
right = mid;
else
left = mid + 1;
}
return left;
}
int main()
{
int i=0,j=0;
scanf("%d%d",&N,&M);
for(i=1; i<=N; i++)
{
scanf("%d",&sum[i]);
sum[i] = sum[i] + sum[i-1];
}
for(i=1; i<=N; i++)
{
int j = upper_bound(i, N+1, sum[i-1]+M);
if((sum[j-1]-sum[i-1]) == M) //j-1,是因为,如果和等于M,找到的j会比合适的大1!
{
nearS = M;
break;
}
else if((sum[j]-sum[i-1])<nearS && j<=N)
{
nearS = sum[j]-sum[i-1];
}
}
for(int i=1; i<=N; i++)
{
int j = upper_bound(i, N+1, sum[i-1]+nearS);
if(sum[j-1]-sum[i-1] == nearS)
printf("%d-%d\n",i,j-1);
}
return 0;
}
#include<cstdio>
#include<cstring>
using namespace std;
int sum[100010]={0},nearS=100010,N=0,M=0;
//在[L,R)寻找第一个比x大的元素
int upper_bound(int L, int R, int x)
{
int left = L, right = R,mid;
while(left<right)
{
mid = (left+right)/2;
if(sum[mid]>x)
right = mid;
else
left = mid + 1;
}
return left;
}
int main()
{
int i=0,j=0;
scanf("%d%d",&N,&M);
for(i=1; i<=N; i++)
{
scanf("%d",&sum[i]);
sum[i] = sum[i] + sum[i-1];
}
for(i=1; i<=N; i++)
{
int j = upper_bound(i, N+1, sum[i-1]+M);
if((sum[j-1]-sum[i-1]) == M) //j-1,是因为,如果和等于M,找到的j会比合适的大1!
{
nearS = M;
break;
}
else if((sum[j]-sum[i-1])<nearS && j<=N)
{
nearS = sum[j]-sum[i-1];
}
}
for(int i=1; i<=N; i++)
{
int j = upper_bound(i, N+1, sum[i-1]+nearS);
if(sum[j-1]-sum[i-1] == nearS)
printf("%d-%d\n",i,j-1);
}
return 0;
}
相关文章推荐
- 1044. Shopping in Mars (25) PAT 甲级
- 1044. Shopping in Mars (25)
- 1044. Shopping in Mars (25)
- 【PAT甲级】1044. Shopping in Mars (25)
- 1044. Shopping in Mars (25)
- PAT 甲级 1044. Shopping in Mars (25)
- 1044. Shopping in Mars (25)
- PAT (Advanced Level) Practise 1044 Shopping in Mars (25)
- PAT A 1044. Shopping in Mars (25)
- 1044. Shopping in Mars (25) 尺取法
- 1044. Shopping in Mars (25)
- PAT Advanced 1044. Shopping in Mars (25)
- 1044. Shopping in Mars (25)
- PAT 1044. Shopping in Mars (25)
- 1044. Shopping in Mars (25)
- PAT甲题题解-1044. Shopping in Mars (25)-水题
- 1044. Shopping in Mars (25)
- PAT 1044. Shopping in Mars (25)
- PAT 1044. Shopping in Mars (25)
- 1044. Shopping in Mars (25)