Pagini recente » Cod sursa (job #2704842) | Statistici Toderean Denisa Oriana (denisa_toderean) | Monitorul de evaluare | Cod sursa (job #1269856) | Cod sursa (job #1709852)
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
long int x,y;
} KOR;
int cmpfg(const void*,const void*);
int main()
{
FILE*fin=fopen("metrou4.in","rt");
FILE*fot=fopen("metrou4.out","wt");
int t,n,i,j;
fscanf(fin,"%d",&t);
for(j=0; j<t; ++j)
{
fscanf(fin,"%d",&n);
KOR q[n];
for(i=0; i<n; ++i)
{
fscanf(fin,"%ld%ld",&q[i].x,&q[i].y);
}
qsort(q,n,sizeof(KOR),cmpfg);
int w[n+1][n+1],p,o;
for(o=0; o<=n; ++o){
for(p=0; p<=n; ++p){
w[o][p]=0;
}
}
for(o=2; o<=n; ++o)
{
for(p=o-1; p<=o; ++p)
{
if(o==p)
{
w[o][p]=0;
}
else if (q[o-1].x<q[p-1].x)
{
w[o][p]=q[o-1].y-q[p-1].y;
}
else if (q[o-1].y<q[p-1].y)
{
w[o][p]=q[o-1].x-q[p-1].x;
}
else
{
w[o][p]=((q[o-1].x-q[p-1].x)+(q[o-1].y-q[p-1].y));
}
}
}
for(o=3; o<=n; ++o)
{
for(p=o-2; p>0; --p)
{
w[o][p]=w[o-1][p]+w[o][o-1];
}
}
fprintf(fot,"%d\n",w[n][1]);
}
fclose(fin);
fclose(fot);
return 0;
}
int cmpfg(const void *p1,const void *p2)
{
KOR *q1=(KOR*)p1;
KOR *q2=(KOR*)p2;
if(q1->x<q2->x)
{
return -1;
}
else if(q1->x>q2->x)
{
return 1;
}
else if(q1->y<q2->y)
{
return -1;
}
else if(q1->y>q2->y)
{
return 1;
}
else return 0;
}