Submission #161576

#TimeUsernameProblemLanguageResultExecution timeMemory
161576shayan_pSure Bet (CEOI17_sure)C++14
100 / 100
118 ms3580 KiB
// Remember...

#include<bits/stdc++.h>

#define F first
#define S second
#define PB push_back
#define sz(s) int((s).size())
#define bit(n,k) (((n)>>(k))&1)

using namespace std;

typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;

const int maxn=1e5+10,mod=1e9+7;
const ll inf=1e18;

double arr[2*maxn];
double a[maxn], b[maxn];

int main(){
    ios_base::sync_with_stdio(false); cin.tie(0); cout.tie();

    int n; cin>>n;
    for(int i=0;i<n;i++)
	cin>>a[i]>>b[i];
    sort(a,a+n), sort(b,b+n);
    reverse(a,a+n), reverse(b,b+n);
    for(int i=0;i<n;i++)
	a[i]+= i==0 ? 0 : a[i-1], b[i]+= i==0 ? 0 : b[i-1], arr[2*i]=a[i], arr[2*i+1]= b[i];
    sort(arr,arr+2*n);
    int pta=0, ptb=0;
    double ans=0;
    for(int i=0;i<2*n;i++){
	while(pta<n && arr[i]>a[pta]) pta++;
	while(ptb<n && arr[i]>b[ptb]) ptb++;
	if(arr[i] > min(a[n-1],b[n-1])) break;
	ans=max(ans, arr[i] -pta -ptb -2);
    }
    return cout<<setprecision(4)<<fixed<<ans<<endl,0;
}
// Deathly mistakes:
//  * Read the problem carefully.
//  * Check maxn.
//  * Overflows.


// #pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
// #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...