Cod sursa(job #785704)

Utilizator vladvaldezVlad Dimulescu vladvaldez Data 9 septembrie 2012 18:26:27
Problema Stalpi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <stdio.h>
#include <math.h>


FILE *f,*g;

float s;
int ss,nr,n,d,k,x,y,l,ll,m,ab[30001],vv[30001],a[30001],v[30001],c[250],i,j,min,aa,bb,o,oo;

int main ()
{


 f=fopen("stalpi3.in","r");
 g=fopen("stalpi3.out","w");

 fscanf(f,"%d %d",&n,&d);
 k=0;
 nr=3;
 for (i=1;i<=n;i++)
 {
   fscanf(f,"%d %d",&x,&y);
   v[x]=y;
   vv[x]=i;
   if (y>k) k=y;
 }
  for (i=1;i<=n;i++){
   fscanf(f,"%d %d",&x,&y);
  a[x]=y;
  ab[x]=i;
  }
  s=0;
  for (j=1;j<=k;j++){
  l=0;
  min=20000;
  ll=0;
  for (i=1;i<=30000;i++)
  {
   if (v[i]==j)
   l=i;
   if (a[i]==j)
   ll=i;
   if (ll!=0 && l!=0)
   if (fabs(l-ll)<min){ min=fabs(l-ll);o=vv[l];oo=ab[ll];}
  }
  m++;
  c[m]=o;
  m++;
  c[m]=oo;
  aa=min*min;
  bb=d*d;
  s=s+sqrt(aa+bb);

  }
  ss=s*1000;
  if (ss % 10!=9)
  fprintf(g,"%.3f\n",s);
  else fprintf(g,"%.3f\n",s-0.001);
for (i=1;i<=m;i++){
if (i%2==1)
fprintf(g,"%d",c[i]);
else
{
fprintf(g," %d",c[i]);
fprintf(g,"\n");
}
}
fclose(g);
return 0;
}