Cod sursa(job #197861)

Utilizator AndreyPAndrei Poenaru AndreyP Data 6 iulie 2008 20:02:05
Problema Reconst Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<stdio.h>
#define N 2010
int n,m,sir[N],sum[N],last[N];
void adauga(int a,int b,int s)
{
	if(!last[a])
	{
		last[a]=b;
		sum[a]=s;
		return;
	}
	if(last[a]<b)
		adauga(last[a]+1,b,s-sum[a]);
	else
	{
		adauga(b+1,last[a],sum[a]-s);
		last[a]=b;
		sum[a]=s;
	}
}
int main()
{
	freopen("reconst.in","r",stdin);
	freopen("reconst.out","w",stdout);
	scanf("%d%d",&n,&m);
	int a,b,c;
	for(; m; m--)
	{
		scanf("%d%d%d",&a,&b,&c);
		adauga(a,b,c);
	}
	for(int i=n; i>0; i--)
	{
		if(last[i])
			sir[i]=sum[i]+sir[last[i]+1];
		else
			sir[i]=sir[i+1];
	}
	for(int i=1; i<n; i++)
		printf("%d ",sir[i]-sir[i+1]);
	printf("%d\n",sir[n]);
	return 0;
}