Pagini recente » Cod sursa (job #1492674) | Istoria paginii planificare | Cod sursa (job #1544831) | Cod sursa (job #1114736) | Cod sursa (job #197925)
Cod sursa(job #197925)
#include <cstdio>
#include <algorithm>
using namespace std;
struct marmota_tripla{long a; long b; long c;};
long n,i,j,sol[2010],x[2010],y[2010],m,s[2010],sum;
marmota_tripla v[2010];
bool cmp(marmota_tripla a, marmota_tripla b)
{
if (a.a<=b.a)
return true;
else
return false;
}
void sparge(marmota_tripla t)
{
marmota_tripla nou;
if (t.a==t.b)
{
sol[t.a]=t.c;
return;
}
if (x[t.a]==0)
{
x[t.a]=t.b;
y[t.a]=t.c;
}
else
{
if (t.b==x[t.a])
return;
if (t.b>x[t.a])
{
nou.a=x[t.a]+1;
nou.b=t.b;
nou.c=t.c-y[t.a];
sparge(nou);
}
else
{
nou.a=t.b+1;
nou.b=x[t.a];
nou.c=y[t.a]-t.c;
x[t.a]=t.b;
y[t.a]=t.c;
sparge(nou);
}
}
}
int main(){
freopen("reconst.in","r",stdin);
freopen("reconst.out","w",stdout);
scanf("%d%d",&n,&m);
for (i=1;i<=m;i++)
scanf("%d%d%d",&v[i].a,&v[i].b,&v[i].c);
sort(v+1,v+n+1,cmp);
for (i=1;i<=m;i++)
sparge(v[i]);
/*for (i=1;i<=n;i++)
printf("%d %d %d\n",i,x[i],y[i]);*/
s[n]=sol[n];
for (i=n-1;i>=1;i--)
{
if (x[i])
{
sum=s[i+1]-s[x[i]+1];
sol[i]=y[i]-sum;
}
s[i]=s[i+1]+sol[i];
}
for (i=1;i<=n;i++)
printf("%d ",sol[i]);
return 0;
}