Skip to content

Commit 6d4249d

Browse files
authored
Merge pull request #450 from Humanshere/main
Day 6 q1
2 parents addac74 + 183a57c commit 6d4249d

1 file changed

Lines changed: 98 additions & 0 deletions

File tree

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
//problem link- https://codeforces.com/contest/2014/problem/C
2+
//submission link- https://codeforces.com/contest/2014/submission/356102395
3+
//approach- (sum+x)/2*n needs to be greater than median for valid x
4+
// so I wrote binary search to find minimum x such that sum+x>median*2*n
5+
// as x will follow predicate function(FFFFTTTTTT)
6+
//Time complexity- O(nlogn)
7+
8+
9+
10+
11+
12+
13+
14+
15+
16+
#include <bits/stdc++.h>
17+
using namespace std;
18+
#define endl '\n'
19+
#define sp << " " <<
20+
#define int long long
21+
#define fora(a) for(auto i:a)
22+
#define gcd(a,b) __gcd(a,b)
23+
#define lcm(a,b) (a*(b/gcd(a,b)))
24+
#define forn(i,n) for(int i=0; i<n; i++)
25+
#define printv(a) {for(auto u:a) cout<<u<<" "; cout<<endl;}
26+
#define inputv(a) {for(int i=0;i<n;i++) cin>>a[i];}
27+
#define ll long long
28+
#define vi vector<int>
29+
#define vll vector<long long>
30+
#define pii pair<int, int>
31+
#define pll pair<long long, long long>
32+
#define all(x) x.begin(),x.end()
33+
34+
void fast_io() {
35+
ios_base::sync_with_stdio(false);
36+
cin.tie(NULL);
37+
cout.tie(NULL);
38+
}
39+
40+
41+
const int MOD = 1e9 + 7;
42+
ll addMod(ll a, ll b) { return (a + b) % MOD; }
43+
ll subMod(ll a, ll b) { return (a - b + MOD) % MOD; }
44+
ll mulMod(ll a, ll b) { return (a * b) % MOD; }
45+
46+
ll powerMod(ll a, ll b) {
47+
ll res = 1;
48+
while (b > 0) {
49+
if (b & 1) res = mulMod(res, a);
50+
a = mulMod(a, a);
51+
b >>= 1;
52+
}
53+
return res;
54+
}
55+
56+
57+
58+
59+
60+
void solve() {
61+
int n;
62+
cin>>n;
63+
vi a(n);
64+
inputv(a);
65+
sort(all(a));
66+
int sum=accumulate(all(a),0LL);
67+
if(n==1||n==2){cout<<-1<<endl;return;}
68+
int low=0;
69+
int high=2*n*a[n/2];
70+
while(high-low>=0){
71+
int mid=low+(high-low)/2;
72+
if(sum+mid>a[n/2]*2*n){
73+
high=mid-1;
74+
}else{
75+
low=mid+1;
76+
}
77+
}
78+
79+
80+
cout<<low<<endl;
81+
}
82+
83+
84+
85+
86+
87+
signed main() {
88+
fast_io();
89+
90+
int t;
91+
cin >> t;
92+
93+
while (t--) {
94+
solve();
95+
}
96+
97+
return 0;
98+
}

0 commit comments

Comments
 (0)