题目分析:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct node
{
int l,w;
}arr[5];
struct mode
{
int ans;
int p,q;
}res[100];
int cmp(node x,node y)
{
if(x.l==y.l)
return x.w<y.w;
else
return x.l<y.l;
}
int main()
{
int l,w;
for(int i=1;i<=4;i++)
{
scanf("%d %d",&l,&w);
if(l>w)
{
arr[i].l=l;
arr[i].w=w;
}
else
{
arr[i].l=w;
arr[i].w =l;
}
}
sort(arr+1,arr+1+4,cmp);
//****1
l=0,w=0;
int num=1;
for(int i=1;i<=4;i++)
{
if(arr[i].l>l)
l=arr[i].l;
w+=arr[i].w;
}
res[num].ans=l*w;
res[num].p=w;
res[num++].q=l;
//****2
l=arr[4].l+arr[1].w;
if(arr[4].w+arr[3].w+arr[2].w>arr[1].l)
w=arr[4].w+arr[3].w+arr[2].w;
else
w=arr[1].l;
if(l*w<res[1].ans)
{
num=1;
res[1].ans=l*w;
res[1].p=min(l,w);
res[1].q=max(l,w);
}
else if(l*w==res[1].ans)
{
res[num++].ans=l*w;
res[num].p=min(l,w);
res[num].q=max(l,w);
}
l=arr[4].l+arr[2].w;
if(arr[4].w+arr[3].w+arr[1].w>arr[2].l)
w=arr[4].w+arr[3].w+arr[1].w;
else
w=arr[2].l;
if(l*w<res[1].ans)
{
num=1;
res[1].ans=l*w;
res[1].p=min(l,w);
res[1].q=max(l,w);
}
else if(l*w==res[1].ans)
{
res[num++].ans=l*w;
res[num].p=min(l,w);
res[num].q=max(l,w);
}
l=arr[4].l+arr[3].w;
if(arr[4].w+arr[1].w+arr[2].w>arr[3].l)
w=arr[4].w+arr[1].w+arr[2].w;
else
w=arr[3].l;
if(l*w<res[1].ans)
{
num=1;
res[1].ans=l*w;
res[1].p=min(l,w);
res[1].q=max(l,w);
}
else if(l*w==res[1].ans)
{
res[num++].ans=l*w;
res[num].p=min(l,w);
res[num].q=max(l,w);
}
//****3
for(int i=1;i<=3;i++)
{
l=arr[4].l;
if(i==1)
{
w=max(arr[4].w+arr[1].l,arr[2].w+arr[3].w+arr[4].w);
}
if(l*w<res[1].ans)
{
num=1;
res[1].ans=l*w;
res[1].p=min(l,w);
res[1].q=max(l,w);
}
else if(l*w==res[1].ans)
{
res[num++].ans=l*w;
res[num].p=min(l,w);
res[num].q=max(l,w);
}
l=arr[4].l;
if(i==2)
{
w=max(arr[4].w+arr[2].l,arr[1].w+arr[3].w+arr[4].w);
}
if(l*w<res[1].ans)
{
num=1;
res[1].ans=l*w;
res[1].p=min(l,w);
res[1].q=max(l,w);
}
else if(l*w==res[1].ans)
{
res[num++].ans=l*w;
res[num].p=min(l,w);
res[num].q=max(l,w);
}
l=arr[4].l;
if(i==3)
{
w=max(arr[4].w+arr[3].l,arr[2].w+arr[1].w+arr[4].w);
}
if(l*w<res[1].ans)
{
num=1;
res[1].ans=l*w;
res[1].p=min(l,w);
res[1].q=max(l,w);
}
else if(l*w==res[1].ans)
{
res[num++].ans=l*w;
res[num].p=min(l,w);
res[num].q=max(l,w);
}
}
//****4
for(int i=1;i<=3;i++)
{
}
}