Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*input
- 3
- 1 1
- 1 2
- 2 1
- */
- #include <bits/stdc++.h>
- #include <ext/pb_ds/assoc_container.hpp>
- using namespace std;
- using namespace __gnu_pbds;
- #define REP(i,j,k) for(int i = j ; i < k ; ++i)
- #define RREP(i,j,k) for(int i = j ; i >=k ; --i)
- #define A first
- #define B second
- #define mp make_pair
- #define pb emplace_back
- #define PII pair<int , int>
- #define MEM(i,j) memset(i , j , sizeof i)
- #define ALL(i) i.begin() , i.end()
- #define DBGG(i,j) cout << i << " " << j << endl
- #define DB4(i,j,k,l) cout << i << " " << j << " " << k << " " << l << endl
- #define IOS cin.tie() , cout.sync_with_stdio(0)
- #define endl "\n"
- ///------------------------------------------------------------
- #define MAX 220
- #define INF 0x3f3f3f3f
- int lx[MAX] , ly[MAX] , good[MAX] , w[MAX][MAX] , slk[MAX];
- int n , s[MAX] , t[MAX];
- PII x[MAX];
- int match(int now){
- s[now] = 1;
- REP(to , 0 , n){
- if(t[to]) continue;
- if(lx[now] + ly[to] == w[now][to]){
- t[to] = 1;
- if(good[to] == -1 || match(good[to]))
- return good[to] = now , 1;
- }
- else slk[to] = min(slk[to] , lx[now] + ly[to] - w[now][to]);
- }
- return 0;
- }
- void update(){
- int val = INF;
- REP(i , 0 , n) if(t[i] == 0) val = min(val , slk[i]);
- REP(i , 0 , n){
- if(s[i]) lx[i] -= val;
- if(t[i]) ly[i] += val;
- }
- }
- void solve(){
- REP(i , 0 , n){
- REP(j , 0 , n){
- good[i] = -1;
- lx[i] = max(lx[i] , w[i][j]);
- }
- }
- REP(i , 0 , n){
- MEM(slk , INF);
- while(1){
- MEM(s , 0) , MEM(t , 0);
- if(match(i)) break;
- else update();
- }
- }
- }
- int32_t main(){
- cin >> n;
- REP(i , 0 , n) cin >> x[i].A >> x[i].B;
- REP(i , 0 , n){
- REP(j , 0 , n){
- if(x[i] == x[j] && i > j) w[i][j] = x[j].A * x[j].B;
- if(x[i] != x[j] && x[i].A >= x[j].A && x[i].B >= x[j].B)
- w[i][j] = x[j].A * x[j].B;
- }
- }
- solve();
- int ans = 0;
- REP(i , 0 , n) ans += x[i].A * x[i].B - w[good[i]][i];
- cout << ans << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement