贪心法的精髓在于只考虑局部最优
#include <iostream>
#include <cstdio>
#include <iomanip>
#include <string>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <set>
#include <vector>
#include <map>
#include <algorithm>
#include <cmath>
#include <stack>
#include <stdlib.h>
#include <stdio.h>
#define INF 0x3f3f3f3f
#define LINF 0x3f3f3f3f3f3f3f3f
#define ll long long
#define ull unsigned long long
#define uint unsigned int
#define l(x) x<<1
#define r(x) x<<1|1
#define ms(a,b) memset(a,b,sizeof(a))
using namespace std;
struct node {
int len, val;
double k;
};
bool cmp(const node&a, const node&b) {
return a.len * b.val < b.len * a.val;
}
int n,sum,ans;
node d[111111];
int main() {
ios::sync_with_stdio(false);
sum = ans = 0;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> d[i].len >> d[i].val;
d[i].k = 1.0 * d[i].val / d[i].len;
sum += d[i].val;
}
sort(d, d + n, cmp);
for (int i = 0; i < n; i++) {
sum -= d[i].val;
ans += d[i].len * 2 * sum;
}
cout << ans << endl;
return 0;
}