Cod sursa(job #197659)

Utilizator raduzerRadu Zernoveanu raduzer Data 5 iulie 2008 13:37:09
Problema Reconst Scor 0
Compilator cpp Status done
Runda Junior Challenge 2008 Marime 1.19 kb
#include <stdio.h>

int n,i,j,k,a[10],x[10],y[10],s[10],s2,b[10],s3,m;

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",&x[i],&y[i],&s[i]);
	for (i=x[1]; i<y[1]; ++i) a[i]=1;
	a[y[1]]=s[1]-(y[1]-x[1]);
	b[y[1]]=1;
	for (i=2; i<=m; ++i)
	{
		s2=0;
		for (j=x[i]; j<=y[i]; ++j) s2+=a[j];
		if (s2!=s[i])
		{
			s3=0;
			for (j=x[i]; j<y[i]; ++j) { if (b[j]==0) a[j]=1; s3+=a[j]; }
			a[y[i]]=s[i]-s3;
			b[y[i]]=1;
		}
		for (k=i-1; k>0; --k)
		{
			s2=0;
			for (j=x[k]; j<=y[k]; ++j) s2+=a[j];
			if (s2!=s[k])
			{
				s3=0;
				for (j=x[k]; j<=y[k]; ++j)
				{
					if (!b[j]) a[j]=1;
					s3+=a[j];
				}
				j=y[k];
				while (b[j]) --j;
				s3-=a[j];
				a[j]=s[k]-s3;
				b[j]=1;
			}
		}
		for (j=1; j<=n; ++j) b[j]=0;
	}
	for (k=m; k>0; --k)
		{
			s2=0;
			for (j=x[k]; j<=y[k]; ++j) s2+=a[j];
			if (s2!=s[k])
			{
				s3=0;
				for (j=x[k]; j<=y[k]; ++j)
				{
					if (!b[j]) a[j]=1;
					s3+=a[j];
				}
				j=y[k];
				while (b[j]) --j;
				s3-=a[j];
				a[j]=s[k]-s3;
				b[j]=1;
			}
		}
	for (i=1; i<=n; ++i) printf("%d ",a[i]);
	return 0;
}