이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
int a[100005], b[100005], suma[100005], sumb[100005];
int f(int x, int y)
{
return min(suma[x]-y*10000, sumb[y]-x*10000);
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, ans=0;
cin >> n;
for (int i=1; i<=n; i++)
{
double x, y;
cin >> x >> y;
a[i]=x*10000.0-9999.9;
b[i]=y*10000.0-9999.9;
}
sort(a+1, a+n+1, greater<int>());
sort(b+1, b+n+1, greater<int>());
for (int i=1; i<=n; i++)
suma[i]=suma[i-1]+a[i];
for (int i=1; i<=n; i++)
sumb[i]=sumb[i-1]+b[i];
for (int i=0; i<=n; i++)
{
int l=0, r=n;
while (l<r)
{
int mid1=(l*2+r)/3, mid2=(l+r*2+1)/3;
int res1=f(i, mid1), res2=f(i, mid2);
if (res1>res2)
r=mid2-1;
else if (res1<res2)
l=mid1+1;
else
{
l=mid1;
r=mid2-1;
}
}
ans=max(ans, f(i, l));
}
cout << fixed << setprecision(4) << ans/10000.0;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |