#include <bits/stdc++.h>
#define ll long long
#define Sayan ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define file(s) if (fopen(s".in", "r")) freopen(s".in", "r", stdin), freopen(s".out", "w", stdout)
#define all(a) a.begin() , a.end()
#define Int(a,x) a+1 , a+1+x
#define sz() size()
#define F first
#define S second
#define pb push_back
#define yes cout << "YES\n"
#define no cout << "NO\n"
#define pii pair<ll,ll>
using namespace std ;
const ll N = 1e5+5;
const ll INF = 1e18;
const ll mod = 1e9+7;
/*
ll binpow(ll a , ll b){
if(b == 0) return 1;
if(b%2) return binpow(a , b-1) * a % mod;
ll c = binpow(a , b/2) % mod;
return c*c%mod;
}
*/
double l[N],r[N];
void solve(){
ll n;
cin>>n;
double mx=0;
double alll=0;
for(ll i=1;i<=n;i++){
cin>>l[i]>>r[i];
alll+=r[i];
}
sort(l+1,l+1+n);
reverse(l+1,l+1+n);
sort(r+1,r+1+n);
reverse(r+1,r+1+n);
double sum1=0;
for(ll i=1;i<=n;i++){
sum1+=l[i];
double otv=n;
ll l1=1,r1=n;
double res=alll;
while(l1<=r1){
ll md=(l1+r1)/2;
double sum2=0;
for(ll j=1;j<=md;j++){
double ex=r[j];
sum2=sum2+ex;
}
if(sum2>=sum1){
r1=md-1;
otv=md;
res=sum2;
}
else l1=md+1;
}
// cout<<res<<" "<<i<<" "<<otv<<"\n";
double mn=min(sum1-(otv+i),res-(otv+i));
mx=max(mx,mn);
}
cout<<fixed<<setprecision(4)<<mx<<"\n";
}
signed main () {
Sayan;
ll t=1;
//cin>>t;
while(t--)solve();
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
344 KB |
Output is correct |
3 |
Incorrect |
1 ms |
344 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
344 KB |
Output is correct |
3 |
Incorrect |
1 ms |
344 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
344 KB |
Output is correct |
3 |
Incorrect |
1 ms |
344 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |