标签:
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<limits.h> using namespace std; pair<int,int>p[100005]; int n,m,t,num; void find(int x) { int i=0,j=1,ans=INT_MAX,temp,l,r,v; while(j<=n && ans) { temp=p[j].first-p[i].first; if(abs(temp-x)<=ans) { ans=abs(temp-x); v=temp; l=p[i].second; r=p[j].second; } if(temp<x) j++; if(temp>x) i++; if(i==j) j++; } if(l>r) { int a=r; r=l; l=a; } printf("%d %d %d\n",v,l+1,r); } int main() { while(scanf("%d%d",&n,&m)==2 && (m+n)) { int sum=0; p[0]=make_pair(0,0); for(int i=1; i<=n; i++) { scanf("%d",&num); sum+=num; p[i]=make_pair(sum,i); } sort(p,p+n+1); while(m--) { scanf("%d",&t); find(t); } } return 0; }
标签:
原文地址:http://www.cnblogs.com/a-clown/p/5917971.html