这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 | |||
|
2020-2021:teams:no_morning_training:poj2566 [2020/05/22 21:17] shaco 移除 |
— (当前版本) | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | <code cpp> | ||
| - | #include<cstdio> | ||
| - | #include<algorithm> | ||
| - | #define INF 0x3f3f3f3f | ||
| - | using namespace std; | ||
| - | int n,k,a; | ||
| - | typedef pair<int,int> unit; | ||
| - | unit sum[100005]; | ||
| - | int main() | ||
| - | { | ||
| - | while(scanf("%d%d",&n,&k)&&n) | ||
| - | { | ||
| - | for(int i=1;i<=n;i++) | ||
| - | { | ||
| - | scanf("%d",&a); | ||
| - | sum[i]=unit(sum[i-1].first+a,i); | ||
| - | } | ||
| - | sort(sum+1,sum+1+n); | ||
| - | for(int i=1;i<=k;i++) | ||
| - | { | ||
| - | scanf("%d",&a); | ||
| - | int t=INF,l,r; | ||
| - | for(int left=1,right=1;right<=n;right++) | ||
| - | { | ||
| - | while(sum[right].first-sum[left].first>a) | ||
| - | { | ||
| - | if(sum[right].first-sum[left].first-a<t) | ||
| - | { | ||
| - | t=sum[right].first-sum[left].first-a; | ||
| - | l=sum[left].second; | ||
| - | r=sum[right].second; | ||
| - | } | ||
| - | left++; | ||
| - | } | ||
| - | if(a-sum[right].first+sum[left].first<t) | ||
| - | { | ||
| - | t=a-sum[right].first+sum[left].first; | ||
| - | l=sum[left].second; | ||
| - | r=sum[right].second; | ||
| - | } | ||
| - | } | ||
| - | printf("%d %d %d\n",sum[r].first-sum[l].first,l,r); | ||
| - | } | ||
| - | } | ||
| - | return 0; | ||
| - | } | ||
| - | </code> | ||