Submission #1225793

#TimeUsernameProblemLanguageResultExecution timeMemory
1225793lizi14Sure Bet (CEOI17_sure)C++20
0 / 100
0 ms320 KiB
#include <bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    vector<double>v1,v2;
    for(int i=0; i<n; i++){
        double j,k;
        cin>>j>>k;
        if(j>=k){
            v1.push_back(j);
        }
        else v2.push_back(k);
    }
    if(v1.size()==0 || v2.size()==0){
        cout<<0<<endl;
        exit(0);
    }
    sort(v1.begin(),v1.end());
    sort(v2.begin(),v2.end());
    int i=v1.size()-1,j=v2.size()-1;
    int ha=0;
    double ans1=0,ans2=0;
    double ans=-1e9;
    int ka=0;
    while(ha==0){
        
        if(i<0 || j<0){
            break;
        }
        
        ans1+=v1[i];
        ka++;
        ans2+=v2[j];
        ka++;
        if(v1[i]>v2[j]){
            //int bati=v2[j];
            while(int(ans2)<int(ans1)){
                j--;
                if(j<0){
                    ha=1;
                    break;
                }
                //bati+=v2[j];
                ans2+=v2[j];
                ka++;
                ans=max(ans,min(ans1-ka,ans2-ka));
            }
            i--;
        }
        else{
            while(int(ans1)<int(ans2)){
                i--;
                if(i<0){
                    ha=1;
                    break;
                }
                
                ans1+=v1[i];
                ka++;
                ans=max(ans,min(ans1-ka,ans2-ka));
            }
            j--;
        }
        //cout<<ans1<<" "<<ans2<<endl;
        // if(min(ans1-ka,ans2-ka)>=ans){
        //     cout<<ans1<<" "<<ans2<<" "<<ka<<endl;
        // }
        ans=max(ans,min(ans1-ka,ans2-ka));
    }
    printf("%.4lf",(double)ans);
    
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...