HDUOJ 4584 2013杭州招待試合再現Building bridges
トランスファゲート
自分で見る.
構想:問題を理解すれば君はできるが,爆発的にやるだけだ.
今回の一番水の問題は、水が家に着いた.
自分で見る.
構想:問題を理解すれば君はできるが,爆発的にやるだけだ.
今回の一番水の問題は、水が家に着いた.
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
struct node
{
int x,y;
} h[1600],c[1600];
int hnum,cnum,m,n;
int hx,hy,cx,cy,l;
char a[50];
int dis(int i,int j)
{
int xl=(h[i].x-c[j].x>0)?h[i].x-c[j].x:c[j].x-h[i].x;
int yl=(h[i].y-c[j].y>0)?h[i].y-c[j].y:c[j].y-h[i].y;
return xl+yl;
}
int main()
{
while(scanf("%d%d",&m,&n))
{
if(m==0&&n==0)return 0;
hnum=0;
cnum=0;
for(int i=0; i<m; i++)
{
scanf("%s",a);
for(int j=0; j<n; j++)
{
if(a[j]=='H')
{
h[hnum].x=i;
h[hnum].y=j;
hnum++;
}
else if(a[j]=='C')
{
c[cnum].x=i;
c[cnum].y=j;
cnum++;
}
}
}
cx=cy=hx=hy=50;
l=1000000;
for(int i=0; i<hnum; i++)
{
for(int j=0; j<cnum; j++)
{
int d=dis(i,j);
if(dis(i,j)<l)
{
l=d;
hx=h[i].x;
hy=h[i].y;
cx=c[j].x;
cy=c[j].y;
}
else if(d==l)
{
if(hx>h[i].x)
{
l=d;
hx=h[i].x;
hy=h[i].y;
cx=c[j].x;
cy=c[j].y;
}
else if(hx==h[i].x)
{
if(hy>h[i].y)
{
l=d;
hx=h[i].x;
hy=h[i].y;
cx=c[j].x;
cy=c[j].y;
}
else if(hy==h[i].y)
{
if(c[j].x<cx)
{
l=d;
hx=h[i].x;
hy=h[i].y;
cx=c[j].x;
cy=c[j].y;
}
else if(cx==c[j].x)
{
if(cy>c[j].y)
{
l=d;
hx=h[i].x;
hy=h[i].y;
cx=c[j].x;
cy=c[j].y;
}
}
}
}
}
}
}
cout<<hx<<" "<<hy<<" "<<cx<<" "<<cy<<endl;
}
return 0;
}