Cod sursa(job #274904)

Utilizator DraStiKDragos Oprica DraStiK Data 10 martie 2009 08:32:43
Problema Reconst Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h>
#define DIM 2005
int a[DIM],s[DIM],l[DIM];
int n,m,p,q,sum;
void baga (int p,int q,int sum) 
{  
    if (q<p) 
        return;    
    if (!l[p]) 
    {  
        l[p]=q;  
        s[p]=sum;  
        return;  
    }  
    if (l[p]<q)  
        baga (l[p]+1,q,sum-s[p]);  
    else 
    {  
        baga (q+1,l[p],s[p]-sum);  
        l[p]=q;  
        s[p]=sum;  
    }  
}  
void read ()
{
	int i;
	scanf ("%d%d",&n,&m);
	for (i=1; i<=m; ++i)
	{
		scanf ("%d%d%d",&p,&q,&sum);
		baga (p,q,sum);
	}
}
void solve ()
{
	int i;
	for (i=n; i; --i)
		if (l[i])
			a[i]=s[i]+a[l[i]+1];
		else
			a[i]=a[i+1];
	for (i=1; i<=n; ++i)
		printf ("%d ",a[i]-a[i+1]);
}
int main ()
{
	freopen ("reconst.in","r",stdin);
	freopen ("reconst.out","w",stdout);
	read ();
	solve ();
	return 0;
}