USACO 1.4.1 Packing Rectangles ―― 暴力+ 模拟(二)
sh_back(make_pair(wb[4] , hb[4]));
}
if(s == s5)
{
if(wb[5] > hb[5])vec.push_back(make_pair(hb[5] , wb[5]));
else vec.push_back(make_pair(wb[5] , hb[5]));
}
// sort(vec.begin() , vec.end());
// vector > :: iterator it;
// it = unique(vec.begin(), vec.end() , cmp);
// vec.reserve(distance(vec.begin() , it));
svec.push_back(make_pair(s , vec));
// cout << "s = " << s << ' ' << s1 << ' '<< s2 << ' '<< s3 << ' '<< s4 << ' ' << s5 << endl;
// num++;
}
}
}
}
// for(int i = 0 ; i < 4 ; i ++)
// {
// printf("%d = %d %d\n" , i + 1 , ww[i].first , ww[i].second);
// }
}while(next_permutation(ww.begin() , ww.end()));
// cout << "(((((((((((((((((((num)))))))))))))))))))" << num << endl;
sort(svec.begin() , svec.end());
// for(int i = 0 ; i < svec.size() ; i++)printf("**%d\n" , svec[i].first );
printf("%d\n" , svec[0].first);
//svec[i].second.size();
vector
> ans;
for(int k = 0 ; k < svec.size() ; k++)
{
if(svec[k].first == svec[0].first)
{
for(int i = 0 ;i < svec[k].second.size() ; i++)
{
ans.push_back(make_pair(svec[k].second[i].first , svec[k].second[i].second));
}
}
}
// cout << "#$$$$" << ans.size() << endl;
sort(ans.begin() , ans.end());
vector > :: iterator it;
it = unique(ans.begin(), ans.end() , cmp);
ans.reserve(distance(ans.begin() , it));
int num = it - ans.begin();
ans.resize(num);
for(int i = 0 ; i < ans.size() ; i++)printf("%d %d\n" , ans[i].first , ans[i].second);
}
return 0;
}