Cod sursa(job #197618)

Utilizator sigridMaria Stanciu sigrid Data 5 iulie 2008 12:16:07
Problema Reconst Scor 0
Compilator cpp Status done
Runda Junior Challenge 2008 Marime 1 kb
#include<fstream.h>
#define dim 2001
#define sp -2100000000


ifstream f("reconst.in");
ofstream g("reconst.out");

long mat[dim][dim];


int main()
{
long i,j,x,y,z,n,m,nn,nn2;

f>>n>>m;

//initializare
for(i=1;i<=n;i++)
 for(j=i;j<=n;j++) mat[i][j]=sp;


for(i=1;i<=m;i++)
 {
  f>>x>>y>>z;
  mat[x][y]=z;

 }

f.close();


nn=n;
nn2=n;

//cat timp exista elemente pe care nu le-am aflat
//sau daca am parcurs de n ori matricea
while(nn && nn2)
{
//parcurg matricea
for(i=1;i<=n;i++)
 for(j=i;j<=n;j++)
  {//daca exista doua valori consecutive [jos, dreapta]
   if(mat[i][j]!=sp)
    {
     //jos
     if(mat[i+1][j]!=sp)
	{
	 //am aflat elementul i
	 mat[i][i]=mat[i][j]-mat[i+1][j];
	 nn--;
	}
     //dreapta
     if(mat[i][j+1]!=sp)
	{
	 //am aflat elementul j+1
	 mat[j+1][j+1]=mat[i][j+1]-mat[i][j];
	 nn--;
	}

    }

  }

nn2--;
}

for(i=1;i<=n;i++)
 if(mat[i][j]!=sp) g<<mat[i][i]<<" ";
  else g<<1<<" ";

g<<'\n';


g.close();

return 0;
}