제출 #1225803

#제출 시각아이디문제언어결과실행 시간메모리
1225803notarat40Sure Bet (CEOI17_sure)C++20
0 / 100
0 ms324 KiB
#include <bits/stdc++.h> #define ll long long #define pb(a) push_back(a) #define in(a) insert(a) #define lldef ll N=0,M=0,K=0,sum=0; string s=""; #define loop(valuename,startvalue,endvalue,changevalue) for(ll valuename=startvalue; valuename<endvalue; valuename+=changevalue) #define rloop(valuename,startvalue,endvalue,changevalue) for(ll valuename=startvalue-1; valuename>=endvalue; valuename-=changevalue) #define mk make_pair #define begin begin() #define end end() #define db long double #define ff first #define ss second using namespace std; const int SIZE=1e5+69; const int MOD=1e9+7; // vector<ll>var; // vector<multiset<ll>>ADJ(SIZE); // vector<ll>vis(SIZE,0); // vector<ll>parent(SIZE,-1); // void dfs(ll vertex){ // vis[vertex]=true; // var.pb(vertex); // for(auto it:ADJ[vertex]){ // if(!vis[it]){ // dfs(it); // } // } // } bool Ptwo(ll N){ return (~N&N-1)==N-1; } ll l=0; inline void test_case(){ lldef; cin>>N; vector<db>A,B; db ans=0.0; loop(i,0,N,1){ db x,y; cin>>x>>y; A.pb(x); B.pb(y); } sort(A.begin,A.end); sort(B.begin,B.end); reverse(A.begin,A.end); reverse(B.begin,B.end); ll pointer1=0,pointer2=-1,bet=1; db sum1=0.0,sum2=0.0; sum1+=A[pointer1]; while(pointer1<N and pointer2<N){ if(sum1>sum2){ pointer2++; sum2+=B[pointer2]; bet++; }else{ pointer1++; sum1+=A[pointer1]; bet++; } ans=max(ans,min(sum1,sum2)-bet); } printf("%.4lf",(double)ans); } int main(){ ll t=1; //cin>>t; while(t--) {test_case(); l++;} }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...