Submission #317846

#TimeUsernameProblemLanguageResultExecution timeMemory
317846nandonathanielSure Bet (CEOI17_sure)C++14
100 / 100
107 ms3576 KiB
#include<bits/stdc++.h>
using namespace std;

double a[100005],b[100005];

int main(){
	ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int n;
	cin >> n;
	for(int i=1;i<=n;i++){
		cin >> a[i] >> b[i];
		a[i]-=1.0;b[i]-=1.0;
	}
	sort(a+1,a+n+1);
	reverse(a+1,a+n+1);
	sort(b+1,b+n+1);
	reverse(b+1,b+n+1);
	for(int i=1;i<=n;i++){
		a[i]+=a[i-1];
		b[i]+=b[i-1];
	}
	double ans=0;
	for(int i=1;i<=n;i++){
		bool state=(a[i]-1.0)>=(b[1]-(double)i);
		int ki=1,ka=n,res;
		while(ki<=ka){
			int mid=(ki+ka)/2;
			bool sini=((a[i]-(double)mid)>=(b[mid]-(double)i));
			if(sini==state){
				res=mid;
				ki=mid+1;
			}
			else ka=mid-1;
		}
		if(state){
			ans=max(ans,b[res]-(double)i);
			if(res+1<=n)ans=max(ans,a[i]-(double)(res+1));
		}
		else{
			ans=max(ans,a[i]-1.0);
		}
	}
	cout << fixed << setprecision(4) << ans << '\n';
	return 0;
}

Compilation message (stderr)

sure.cpp: In function 'int main()':
sure.cpp:37:45: warning: 'res' may be used uninitialized in this function [-Wmaybe-uninitialized]
   37 |    if(res+1<=n)ans=max(ans,a[i]-(double)(res+1));
      |                                         ~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...