Submission #103831

#TimeUsernameProblemLanguageResultExecution timeMemory
103831luciocfSure Bet (CEOI17_sure)C++14
100 / 100
102 ms5120 KiB
#include <bits/stdc++.h>

using namespace std;

const int maxn = 1e5+10;

int n;

double a[maxn], b[maxn];
double s[2][maxn];

int busca(int m, bool q)
{
	int ini, fim, ans = 0;

	if (m > n) ini = m-n, fim = n;
	else ini = 1, fim = m;

	while (ini <= fim)
	{
		int mid = (ini+fim)>>1;

		if (s[q][mid] <= s[!q][m-mid]) ans = mid, ini = mid+1;
		else fim = mid-1;
	}

	return ans;
}

bool comp(double a, double b) {return a > b;}

int main(void)
{
	scanf("%d", &n);

	for (int i = 1; i <= n; i++)
		scanf("%lf %lf", &a[i], &b[i]);

	sort(a+1, a+n+1, comp);
	sort(b+1, b+n+1, comp);

	for (int i = 1; i <= n; i++)
	{
		s[0][i] = s[0][i-1]+a[i];
		s[1][i] = s[1][i-1]+b[i];
	}

	double ans = 0.00;

	for (int i = 1; i <= 2*n; i++)
		ans = max({ans, s[0][busca(i, 0)]-(double)i, s[1][busca(i, 1)]-(double)i});

	printf("%.4lf\n", ans);
}

Compilation message (stderr)

sure.cpp: In function 'int main()':
sure.cpp:34:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &n);
  ~~~~~^~~~~~~~~~
sure.cpp:37:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%lf %lf", &a[i], &b[i]);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...