Cod sursa(job #68536)

Utilizator svalentinValentin Stanciu svalentin Data 28 iunie 2007 12:31:15
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.36 kb
#include<math.h>
#include<stdio.h>
#include<stdlib.h>

int incz,retz,vb1,diz,aux,n,m,x,y,i,j;
int a[7000][4];

int main()
{
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
scanf("%d%d%d%d",&n,&m,&x,&y);
for(i=1;i<=m;i++)
  {
  scanf("%d%d%d",&a[i][1],&a[i][2],&a[i][3]);
  }
aux=m;
i=0;
while(i<m-1)
  {
  i++;
  j=i+1;
   while(j<m)
    {
    j++;
     if (a[i][1]==a[j][1])
      {
      m++;
      if (a[i][2]<a[j][2])
	{
	a[m][1]=a[i][2];
	a[m][2]=a[j][2];
	}
      if (a[i][2]>a[j][2])
	{
	a[m][1]=a[j][2];
	a[m][2]=a[i][2];
	}
      a[m][3]=abs(a[i][3]-a[j][3]);
      }
    }
  }
i=0;
while(i<aux-1)
  {
  i++;
  j=i+1;
  while(j<m)
    {
    j++;
    if (a[i][2]==a[j][2])
      {
       m++;
      if (a[i][1]<a[j][1])
	{
	a[m][1]=a[i][1];
	a[m][2]=a[j][1];
	}
      if (a[i][1]>a[j][1])
	{
	a[m][1]=a[j][1];
	a[m][2]=a[i][1];
	}
      a[m][3]=abs(a[i][3]-a[j][3]);
      }
    }
  }
/*for(i=1;i<=m;i++)
  {
  printf("%d %d %d",a[i][1],a[i][2],a[i][3]);
  printf("\n");
  }*/
vb1=1;
retz=x;
incz=1;
while (retz!=y)
  {
  if (vb1==0)
    {
    retz=0;
    diz=0;
    incz++;
    }
  vb1=0;
  for(i=incz;i<=m;i++)
    {
    if ((a[i][1]==retz) && (a[i][2]<=y))
      {
      retz=a[i][2];
      diz=diz+a[i][3];
      vb1=1;
      }
    }
  }
printf("%d",diz);
return 0;
}