[C++] 純文本查看 復制代碼
#include<iostream>
#include<set>
using namespace std;
typedef pair<int,int> PII;
int n,m;
set<PII> ns;
void add(int x,int y)
{
if(x>=0 && x<=n && y>=0 && y<=m)
ns.insert(make_pair(x,y));
}
inline double dis(PII a,PII b)
{
double x=a.first-b.first;
double y=a.second-b.second;
return x*x+y*y;
}
int main()
{
cin>>n>>m;
//lower-left
add(0,0);
add(0,1);
add(1,0);
//lower-right
add(n,0);
add(n-1,0);
add(n,1);
//upper-left
add(0,m);
add(0,m-1);
add(1,m);
//upper-right
add(n,m);
add(n-1,m);
add(n,m-1);
//brute forces
double best=0;
PII p1,p2,p3,p4;
set<PII>::iterator i1,i2,i3,i4;
for(i1=ns.begin();i1!=ns.end();i1++)
for(i2=ns.begin();i2!=ns.end();i2++)
for(i3=ns.begin();i3!=ns.end();i3++)
for(i4=ns.begin();i4!=ns.end();i4++)
{
if(i1==i2 || i1==i3 || i1==i4 || i2==i3 || i2==i4 || i3==i4)
continue;
double len=dis(*i1,*i2)+dis(*i2,*i3)+dis(*i3,*i4);
if(len>best)
{
best=len;
p1=*i1;
p2=*i2;
p3=*i3;
p4=*i4;
}
}
cout<<p1.first<<" "<<p1.second<<endl;
cout<<p2.first<<" "<<p2.second<<endl;
cout<<p3.first<<" "<<p3.second<<endl;
cout<<p4.first<<" "<<p4.second<<endl;
}