Cod sursa(job #203767)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 19 august 2008 13:24:31
Problema Reconst Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int n, m, sum[2005], last[2005], v[2005];

void add(int a, int b, int s)
{
	if (b < a) return;
	if (last[a] == -1)
	{
		last[a] = b;
		sum[a] = s;
	}
	else if (last[a] < b)	add(last[a] + 1, b, s - sum[a]);
	else 
	{
		add(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);
	
	int i, x, y, s;
	memset(last,-1,sizeof(last));
	scanf("%d %d",&n,&m);

	for (i = 1; i <= m; i++)
	{
		scanf("%d %d %d",&x,&y,&s);
		add(x,y,s);
	}

	for (i = n; i; --i)  
		if (last[i] != -1)  
			v[i] = sum[i] + v[last[i] + 1];  
		else v[i] = v[i + 1];  

	for (i = 1; i <= n; i++) printf("%d ",v[i] - v[i + 1]
		);
	return 0;
}