题目:http://codeforces.com/contest/270/problem/C
思路:每种盒子是独立的,四个小盒子换一个大盒子,最后剩下的一个盒子可以装下所有变长为2^k的盒子 找出对于所有k的边长最大的盒子。
#include <iostream> #include <cmath> using namespace std; int arr[100005]; int main() { int n; cin>>n; int k,a; int ans=0; int maxk=0; for (int i = 0; i < n; i++) { cin>>k>>a; if(k<maxk) continue; else maxk=k; while(1) { a=ceil(a/4.0); k++; if(a<=1) break; } ans=max(ans,k); } cout<<ans; return 0; }