Pagini recente » Cod sursa (job #3138396) | Istoria paginii runda/dhshsfz | Clasament simulareinfo_oji_7_9 | Istoria paginii runda/sim_oji/clasament | Cod sursa (job #197926)
Cod sursa(job #197926)
#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];
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);
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;
}