이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define ar array< int , 2>
#define MASK(i) (1 << (i))
#define BIT(x, i) (((x) >> (i)) & 1)
const int MAX = 1e5 + 1000;
double n, a[MAX], b[MAX], ans, x, y;
bool Compare(double a, double b)
{
return a >= b;
}
vector< double > A, B;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n;
A.push_back(LONG_MAX);
B.push_back(LONG_MAX);
for (int i = 1; i <= n; i++)
{
cin >> a[i] >> b[i];
A.push_back(a[i]);
B.push_back(b[i]);
}
sort(A.begin(), A.end(), Compare);
sort(B.begin(), B.end(), Compare);
//for (double i : A) cout << i << '\n' ;
double sum1 = A[1], sum2 = B[1], sum3 = 2.0;
int i1 = 2, i2 = 2;
while (true)
{
ans = max(ans, min(sum1 - sum3, sum2 - sum3));
if (sum1 - sum3 < 0 && i1 <= n)
{
sum1 += A[i1];
i1++;
sum3 += 1.0;
}
else
if (sum2 - sum3 < 0 && i2 <= n)
{
sum2 += B[i2];
i2++;
sum3 += 1.0;
}
else
if (sum1 < sum2 && i1 <= n)
{
sum1 += A[i1];
i1++;
sum3 += 1.0;
}
else
if (sum1 > sum2 && i2 <= n)
{
sum2 += B[i2];
i2++;
sum3 += 1.0;
}
else
if (sum1 == sum2 && i1 <= n && i2 <= n)
{
sum1 += A[i1];
i1++;
sum3 += 1.0;
sum2 += B[i2];
i2++;
sum3 += 1.0;
} else break;
}
printf("%.4lf",(double)ans);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |