Cod sursa(job #291254)
#include<fstream>
using namespace std;
ifstream fin("reconst.in");
ofstream fout("reconst.out");
struct inter { long x,y,s;
} a[2001];
long n,m,b[2001],c[2001],sol[2001],sum[2001];
int main()
{ long i,n1,n2;
fin>>n>>m;
for(i=1;i<=m;i++)
fin>>a[i].x>>a[i].y>>a[i].s;
for(i=1;i<=m;i++)
{ while(b[a[i].y]&&a[i].x<=a[i].y)
{ if(b[a[i].y]>=a[i].x)
a[i].s-=c[a[i].y];
else { n1=b[a[i].y];
n2=c[a[i].y]-a[i].s;
c[a[i].y]=a[i].s;
b[a[i].y]=a[i].x;
a[i].x=n1;
a[i].s=n2;
}
a[i].y=b[a[i].y]-1;
}
if(a[i].y>=a[i].x)
{ b[a[i].y]=a[i].x;
c[a[i].y]=a[i].s;
}
}
for(i=1;i<=n;i++)
{ if(b[i])
sol[i]=c[i]-sum[i-1]+sum[b[i]-1];
sum[i]=sum[i-1]+sol[i];
}
for(i=1;i<=n;i++)
fout<<sol[i]<<" ";
fin.close();
fout.close();
return 0;
}