Pagini recente » preONI 2005 runda #2 - solutii | Cod sursa (job #242874) | Cod sursa (job #837868) | Cod sursa (job #1032740) | Cod sursa (job #637047)
Cod sursa(job #637047)
#include<stdio.h>
#include<fstream>
using namespace std;
ifstream in("portal3.in");
ofstream out("portal3.out");
int n,m,minim,c1,c2,c3,dist,t;
struct punct
{
int x,y;
};
punct p1,p2,p3,p4,p5,p6;
int query()
{
//fara portal
minim=n+m+2;
//primul portal
if(n-p1.x+m-p1.y>= n-p2.x+m-p2.y) dist=n-p1.x+m-p1.y+p2.x+p2.y+2+c1;
else dist=n+m-p2.x-p2.y+p1.x+p1.y+2+c1;
if (dist<minim) minim=dist;
//al doilea portal
if(n-p3.x+m-p3.y>= n-p4.x+m-p4.y) dist=n-p3.x+m-p3.y+p4.x+p4.y+2+c2;
else dist=n+m-p4.x-p4.y+p3.x+p3.y+2+c2;
if (dist<minim) minim=dist;
//al treilea portal
if(n-p5.x+m-p5.y>= n-p6.x+m-p6.y) dist=n-p5.x+m-p5.y+p6.x+p6.y+2+c3;
else dist=n+m-p6.x-p6.y+p5.x+p5.y+2+c3;
if (dist<minim) minim=dist;
return minim;
}
int main()
{
in>>t;
for(int i=1;i<=t;i++)
{
in>>n>>m;
in>>p1.x>>p1.y>>p2.x>>p2.y>>c1;
in>>p3.x>>p3.y>>p4.x>>p4.y>>c2;
in>>p5.x>>p5.y>>p6.x>>p6.y>>c3;
out<<query()<<"\n";
}
}