#include<iostream>
#include<algorithm>
#include<vector>
#include<set>
#define MAXN 1930
#define M_4 4
using namespace std; struct _node
{
int len;
int wide;
};
struct _node_ans
{
int len;
int wide;
int area;
}; int _max(int a,int b);
int _max(int a,int b,int c);
int _max(int a,int b,int c,int d);
int compare(const void * i,const void * j);
void fun_1(int index);
void fun_2(int index);
void fun_3(int index);
void fun_4(int index);
void fun_5(int index);
void fun_6(int index);
_node _m[M_4];
int _sub[M_4];
int compare1(const void * i,const void * j);
_node_ans _ans[MAXN];
void init();
int stack_p = ; int main()
{
//freopen("acm.acm","r",stdin);
int i;
int sum = ;
int temp;
for(i = ; i < M_4; ++ i)
{
cin>>_m[i].wide;
cin>>_m[i].len;
}
init();
do
{
fun_1(-);
fun_2(-);
fun_3(-);
fun_4(-);
fun_6(-);
}while(next_permutation(_sub,_sub+M_4));
qsort(_ans,stack_p,sizeof(_node_ans),compare);
temp = _ans[].area;
for(i = ; i < stack_p; ++ i)
{
if(_ans[i].area == temp)
{
if(_ans[i].len > _ans[i].wide)
{
iter_swap(&_ans[i].len,&_ans[i].wide);
}
++ sum;
}
else
break;
}
qsort(_ans,sum,sizeof(_node_ans),compare1);
cout<<temp<<endl;
for(i = ; i < sum; ++ i)
{
if(i == || (_ans[i].len != _ans[i-].len || _ans[i].wide != _ans[i-].wide))
cout<<_ans[i].len<<" "<<_ans[i].wide<<endl;
}
} int compare1(const void * i,const void * j)
{
return ((_node_ans *)i)->len - ((_node_ans *)j)->len;
} int compare(const void * i,const void * j)
{
return ((_node_ans *)i)->area - ((_node_ans *)j)->area;
} void init()
{
int i;
for(i = ; i < M_4; ++ i)
{
_sub[i] = i;
}
} void fun_1(int index)
{
++ index;
if(index == M_4)
{
_ans[stack_p].len = _m[_sub[]].len + _m[_sub[]].len + _m[_sub[]].len + _m[_sub[]].len;
_ans[stack_p].wide = _max(_m[_sub[]].wide,_m[_sub[]].wide,_m[_sub[]].wide,_m[_sub[]].wide);
_ans[stack_p].area = _ans[stack_p].len * _ans[stack_p].wide;
stack_p ++;
return;
}
fun_1(index);
iter_swap(&_m[_sub[index]].wide,&_m[_sub[index]].len);
fun_1(index);
iter_swap(&_m[_sub[index]].wide,&_m[_sub[index]].len);
} void fun_2(int index)
{
++ index;
if(index == M_4)
{
_ans[stack_p].len =_max(_m[_sub[]].len +_m[_sub[]].len + _m[_sub[]].len,_m[_sub[]].len);
_ans[stack_p].wide = _max(_m[_sub[]].wide,_m[_sub[]].wide,_m[_sub[]].wide) + _m[_sub[]].wide;
_ans[stack_p].area = _ans[stack_p].len * _ans[stack_p].wide;
stack_p ++;
return;
}
fun_2(index);
iter_swap(&_m[_sub[index]].len,&_m[_sub[index]].wide);
fun_2(index);
iter_swap(&_m[_sub[index]].len,&_m[_sub[index]].wide);
} void fun_3(int index)
{
++ index;
if(index == M_4)
{
_ans[stack_p].len = _m[_sub[]].len + _max(_m[_sub[]].len+_m[_sub[]].len ,_m[_sub[]].len );
_ans[stack_p].wide = _max(_m[_sub[]].wide,_max(_m[_sub[]].wide,_m[_sub[]].wide)+_m[_sub[]].wide);
_ans[stack_p].area = _ans[stack_p].len * _ans[stack_p].wide;
stack_p ++;
return;
}
fun_3(index);
iter_swap(&_m[_sub[index]].len,&_m[_sub[index]].wide);
fun_3(index);
iter_swap(&_m[_sub[index]].len,&_m[_sub[index]].wide);
} void fun_4(int index)
{
++ index;
if(index == M_4)
{
_ans[stack_p].len = _m[_sub[]].len + _m[_sub[]].len + _max(_m[_sub[]].len,_m[_sub[]].len);
_ans[stack_p].wide = _max(_m[_sub[]].wide,_m[_sub[]].wide,_m[_sub[]].wide + _m[_sub[]].wide);
_ans[stack_p].area = _ans[stack_p].len * _ans[stack_p].wide;
stack_p ++;
return;
}
fun_4(index);
iter_swap(&_m[_sub[index]].len,&_m[_sub[index]].wide);
fun_4(index);
iter_swap(&_m[_sub[index]].len,&_m[_sub[index]].wide);
} void fun_6(int index)
{
++ index;
if(index == M_4)
{
_ans[stack_p].len = _max(_m[_sub[]].len+_m[_sub[]].len,_m[_sub[]].len + _m[_sub[]].len,_m[_sub[]].len + _m[_sub[]].len);
_ans[stack_p].wide = _max(_m[_sub[]].wide+_m[_sub[]].wide,_m[_sub[]].wide+_m[_sub[]].wide,_m[_sub[]].wide+_m[_sub[]].wide);
_ans[stack_p].area = _ans[stack_p].len * _ans[stack_p].wide;
stack_p ++;
return;
}
fun_6(index);
iter_swap(&_m[_sub[index]].len,&_m[_sub[index]].wide);
fun_6(index);
iter_swap(&_m[_sub[index]].len,&_m[_sub[index]].wide);
} int _max(int a,int b)
{
if(a > b)
{
return a;
}
return b;
} int _max(int a,int b,int c)
{
a = _max(a,b);
a = _max(a,c);
return a;
} int _max(int a,int b,int c,int d)
{
return _max(a,_max(b,c,d));
} void fun_5(int index)
{
++ index;
if(index == M_4)
{
_ans[stack_p].len = _m[_sub[]].len + _m[_sub[]].len + _max(_m[_sub[]].len,_m[_sub[]].len);
_ans[stack_p].wide = _max(_m[_sub[]].wide,_m[_sub[]].wide,_m[_sub[]].wide + _m[_sub[]].wide);
_ans[stack_p].area = _ans[stack_p].len * _ans[stack_p].wide;
stack_p ++;
return;
}
fun_5(index);
iter_swap(&_m[_sub[index]].len,&_m[_sub[index]].wide);
fun_5(index);
iter_swap(&_m[_sub[index]].len,&_m[_sub[index]].wide);
}

关注我的公众号,当然,如果你对Java, Scala, Python等技术经验,以及编程日记,感兴趣的话。

技术网站地址: vmfor.com

POJ 1169的更多相关文章

  1. POJ 题目分类(转载)

    Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...

  2. (转)POJ题目分类

    初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推. ...

  3. poj分类

    初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      ( ...

  4. poj 题目分类(1)

    poj 题目分类 按照ac的代码长度分类(主要参考最短代码和自己写的代码) 短代码:0.01K--0.50K:中短代码:0.51K--1.00K:中等代码量:1.01K--2.00K:长代码:2.01 ...

  5. POJ题目分类(按初级\中级\高级等分类,有助于大家根据个人情况学习)

    本文来自:http://www.cppblog.com/snowshine09/archive/2011/08/02/152272.spx 多版本的POJ分类 流传最广的一种分类: 初期: 一.基本算 ...

  6. POJ题目分类(转)

    初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推. ...

  7. POJ题目细究

    acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP:  1011   NTA                 简单题  1013   Great Equipment     简单题  102 ...

  8. POJ题目(转)

    http://www.cnblogs.com/kuangbin/archive/2011/07/29/2120667.html 初期:一.基本算法:     (1)枚举. (poj1753,poj29 ...

  9. [POJ题目分类][转]

    Hint:补补基础... 初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治 ...

随机推荐

  1. 2018.09.09 bzoj4403: 序列统计(Lucas定理)

    传送门 感觉单调不降序列什么的不好做啊. 于是我们序列中下标为i的元素的值加上i,这样就构成了一个单调递增的序列. 问题就变成了: 求出构造长度分别为1 ~ n且每个元素的值在l+1 ~ r+n之间的 ...

  2. arduino 中通过寄存器地址访问寄存器内容

    void call_func( void (*func)(void)){ (*func)(); } void setup() { // put your setup code here, to run ...

  3. hadoop学习笔记(五):java api 操作hdfs

    HDFS的Java访问接口 1)org.apache.hadoop.fs.FileSystem 是一个通用的文件系统API,提供了不同文件系统的统一访问方式. 2)org.apache.hadoop. ...

  4. python编码(六)

    1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有 ...

  5. 3) Maven 目录结构

    进入maven根目录 cmd 命令 tree E:. │ LICENSE.txt │ NOTICE.txt │ README.txt │ ├─bin │ m2.conf │ mvn │ mvn.bat ...

  6. C++ 11可变参数接口设计在模板编程中应用的一点点总结

    概述 本人对模板编程的应用并非很深,若要用一句话总结我个人对模板编程的理解,我想说的是:模板编程是对类定义的弱化. 如何理解“类定义的弱化”? 一个完整的类有如下几部分组成: 类的名称: 类的成员变量 ...

  7. What Is Your Grade?

    Problem Description “Point, point, life of student!”This is a ballad(歌谣)well known in colleges, and ...

  8. ScrollView嵌套listview ,滚动问题。设置listview不滚动

    对于ListView内部的ListView,一般用来展示少量的列表数据. 内部的ListView的高度看起来是一个固定值且无法滑动,这个就比较蛋疼了.. 提供两种解决方案,方案的核心都是重新设置内部L ...

  9. android免root hook框架legend

    一.前言 Android中hook框架已经非常多了,最优秀的当属Xposed和Substrate了,这两个框架我在之前的文章都详细介绍过了,不了解的同学,可以转战这里:http://www.wjdia ...

  10. 动态的把固定格式的json数据以菜单形式插入

    var root=$("#side-menu"); $(menuData).each(function(i,n){ var top1Li=$("<li>< ...