Cod sursa(job #197658)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 5 iulie 2008 13:31:25
Problema Reconst Scor 0
Compilator cpp Status done
Runda Junior Challenge 2008 Marime 0.98 kb
#include <stdio.h>
#define NMAX 2010

long q,n,m,a[NMAX],b[NMAX],s[NMAX],nr=1,i,j,v[NMAX];

long maxim(long a,long b)
{
if (a>b) return a;
    else return b;
}

long minim(long a,long b)
{
if (a>b) return b;
    else return a;
}

int main()
{

freopen("reconst.in","rt",stdin);
freopen("reconst.out","wt",stdout);

scanf("%ld %ld", &n, &m);
for (i=1;i<=m;i++)
    scanf("%ld %ld %ld", &a[i], &b[i], &s[i]);

i=1;
q=0;
while (i<=m)
      {
       j=i+1;
	 while (j<=m)
	  {
	   if (a[i]-a[j]==0 && b[i]-b[j]==-1 || b[i]-b[j]==1)
	   {
		   v[j]=maxim(s[i],s[j])-minim(s[i],s[j]);
	   q=1;
	   }
	   else
	   if (a[i]-a[j]==-1 && b[i]-b[j]==0)
	   {
	   v[i]=maxim(s[i],s[j])-minim(s[i],s[j]);
	   q=1;
	   }
	 if (q==1) break;
	  j++;
	}
if (q==1) break;
i++;
}


while (nr<=m)
for (i=1;i<=m;i++)
     if (b[i]-a[i]==1 && v[b[i]]!=0)
     {
     v[i]=s[i]-v[b[i]];
     nr++;
     }


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