Cod sursa(job #274479)
#include<stdio.h>
#define Nmax 2005
FILE *fin=fopen("reconst.in","r"),
*fout=fopen("reconst.out","w");
int N,M,A[Nmax];
long long S[Nmax];
struct {int b,s;} T[Nmax];
int main(){
fscanf(fin,"%d %d",&N,&M);
for(int i=1;i<=M;i++){
int x,y,z;
fscanf(fin,"%d %d %d",&x,&y,&z);
if(T[x].b==y)
--M,--i;
else
while(T[x].b){
z-=T[x].s;
x=T[x].b+1;
}
if(T[x].b==y)
--M,--i;
else
T[x].b=y,T[x].s=z;
}
for(int i=N;i;--i){
if(T[i].b)
A[i]=T[i].s-(S[i+1]-S[T[i].b+1]);
S[i]=(long long)A[i]+S[i+1];
}
for(int i=1;i<=N;i++)
fprintf(fout,"%d ",A[i]);
fclose(fin);
fclose(fout);
return 0;
}