/*************************************************** * Alex Palcuie * Romania - 2016 * alex [dot] palcuie [at] gmail [dot] com * http://blog.palcu.ro/ ****************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int N = 1<<10; const int INF = 0x3f3f3f3f; vector> v; inline int calc(int a, int b) { return v[a].first + v[b].first - floor(log2(max(v[a].second, v[b].second) - min(v[a].second, v[b].second))); } int main() { int n; cin >> n; for (int i=0; i> x; v.push_back({x, i}); } sort(begin(v), end(v)); int max_len = min(1000, (int)v.size()); int sol = calc(0, 1); for (int i=0; i