TKW的想法超级神奇,具体分析见代码
#include <cstdlib>
#include <stdio.h>
#include <string.h>
using namespace std;
int run[15005];
int main() {
int n;
while(scanf("%d",&n)!=EOF){
memset(run,0,sizeof(run));
int a,b,c;
while(scanf("%d%d%d",&a,&b,&c)){
if(a==-1||b==-1||c==-1) break;
//仔细读题,题中说的是当start==-1是就可以停止了,所以不要写成了
//if(a==-1&&b==-1&&c==-1) break;这样会TLE,太坑爹了= =!
run[a]+=c;//这儿就是这道题的精髓,就两行。。。。。太NB了
run[a+b]=-c;
}
int maxl,maxr,sum=0,posl,posr;
for(int i=0;i<=n;i++){
sum+=run[i];
run[i]=sum;
if(sum>maxl){
maxl=sum;
posl=i;
}
}
for(int i=0;i<=n;i++){
sum+=run[i];
run[i]=sum;
if(sum>maxl){
maxl=sum;
posl=i;
}
}
printf("%d %d\n",posl,posr);
}
return 0;
}