제출 #471108

#제출 시각아이디문제언어결과실행 시간메모리
471108Killer2501Sure Bet (CEOI17_sure)C++14
100 / 100
159 ms2752 KiB
#include<bits/stdc++.h>

using namespace std;
 
const int N=1e5+5;
int n;
long long a[N],b[N];
long long s[N], mod = 1e9;
 
bool check(long long lim)
{
    long long cur=0;
    for(int i=1;i<=n;i++)
    {
        cur+=a[i];
        long long mx=(cur-lim)/mod-i;
        if(mx<0) continue;
        mx=min(mx,1ll*n);
        if(s[mx]-mod*i>=lim) return true;
    }
    return false;
}
 
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cin>>n;
    for(int i=1;i<=n;i++)
    {	
      	double x;
        cin>> x;
        a[i] =mod*x;
      	cin >> x;
        b[i] = mod * x;
    }
    sort(a+1,a+n+1);
    sort(b+1,b+n+1);
    reverse(a+1,a+n+1);
    reverse(b+1,b+n+1);
    for(int i=1;i<=n;i++) s[i]=max(s[i-1],s[i-1]+b[i]-mod);
    long long l=1,r=1e18,res=0;
    while(l<=r)
    {
        long long mid=(l+r)/2;
        if(check(mid))
        {
            res=mid;
            l=mid+1;
        }
        else r=mid-1;
    }
    cout<<fixed<<setprecision(4)<<1.0*r/mod;
}

컴파일 시 표준 에러 (stderr) 메시지

sure.cpp: In function 'int main()':
sure.cpp:42:26: warning: variable 'res' set but not used [-Wunused-but-set-variable]
   42 |     long long l=1,r=1e18,res=0;
      |                          ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...