#include <algorithm> #include <iostream> #include <string.h> #include <stdlib.h> #include <iomanip> #include <utility> #include <vector> #include <math.h> #include <queue> #include <stack> #include <map> #include <set> using namespace std; #define pb push_back #define pp pop_back #define nl cout << "\n" #define MIN(con) (*min_element(ALL(con))) #define MAX(con) (*max_element(ALL(con))) #define NX(cont) next_permutation(ALL(cont)) #define PX(cont) prev_permutation(ALL(cont)) #define prec(n) cout << fixed << setprecision(n) #define PI 3.14159265358979323846264338327951 #define all(c) c.begin(),c.end() #define rep(i,a,b) for(ll i=a;i<b;i++) #define sp cout << " " #define mod 1000000007 //9 #define ifalse ios_base::sync_with_stdio(false),cin.tie(NULL) using ll = long long; using ld = long double; template < typename T > T GCD(T a, T b) { ll t; while(a) { t = a; a = b % a; b = t; } return b; } template < typename T > T LCM(T a, T b) { return (a * b) / GCD(a, b); } template < typename T > string toString(T a) { return to_string(a); } // Convert int to string template < typename T > void toInt(string s, T &x) { stringstream str(s); str >> x;} // Convert string to int ll add(ll x, ll y) { x += y; if(x >= mod) x -= mod; return x; } ll sub(ll x, ll y) { x -= y; if(x < 0) x += mod; return x; } ll mul(ll x, ll y) { return ((x % mod) * (y % mod)) % mod; } ll powr(ll a, ll b) { ll x = 1LL; while(b) { if(b & 1) x = mul(x, a); a = mul(a, a); b >>= 1; } return x; } ll inv(ll a) { return powr(a, mod - 2); } const int inv2 = (mod + 1) >> 1; const ll INF = 1e18; const int inf = 1e9; bool check(ll n) { if(n == 1) return 0; if(n == 2 or n == 3) return 1; if(n % 2 == 0 or n % 3 == 0) return 0; for(ll i = 5; i * i <= n; i += 6) if(n % i == 0 or n % (i + 2) == 0) return 0; return 1; } /*********************************************START**************************************************************/ int main() { ifalse; int t; cin >> t; while(t --) { int n; cin >> n; vector < pair < ll, pair < ll, ll > > > v; rep(i, 0, n) { ll x, y; cin >> x >> y; v.pb({x + y, {x, y}}); } sort(all(v)); reverse(all(v)); ll ans = v[0].second.first + v[1].second.first; for(int i = 2; i < n; i ++) { ans -= v[i].second.second; } cout << ans, nl; } return 0; }
Problem Description
Ted: Robin, get me my legal pad. It’s Pros and Cons Time!There is a long list of n girls in front of Barney, and he is to calculate the optimal “happiness” he can find by selecting exactly 2 girls. (Why 2? No one knows!)
Ted, as a fan of pros and cons, suggests to make a list, a method for estimating the maximum happiness that Barney can achieve.
Each girl is characterized by two parameters:
– favour: if this girl is chosen, his happiness increases by this amount.
– anger: if this girl is not chosen, his happiness decreases by this amount.
Find the maximum “happiness” that Barney can obtain. Note that the answer is allowed to be negative.
Input:
The first line of input file contains an integer t, denoting the number of test cases to follow.
The first line of each test case contains an integer n, as explained in statement. It is followed by n lines, each containing two space-seperated integers denoting the favour and anger of the ith girl.
Output:
The output file should contain t lines, each containing answer for the test case.
Constraints:
1 <= t <= 10
2 <= n <= 1e^5
0 <= favour[i], anger[i] <= 1e^9
None of the input files exceed 4MB.
Test Case 1
Input (stdin)
1 4 2 3 10 2 11 5 4 1
Expected Output
17
Test Case 2
Input (stdin)
1 2 3 1 4 2
Expected Output
7
No comments:
Post a Comment