闲的没事把之前一直没写对的题写一下,现在还是不会写(
代码很有可读性。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll Read(){
ll get=0,w=1;
char c;
while(c=getchar(),c<'0'||c>'9') (c=='-')?w=-1:1;
while(c=getchar(),c>='0'&&c<='9') get=get*10+c-'0';
return get*w;
}
void Write(ll a){
(a<0)?putchar('-'),a=-a:1;
if(a>=10) Write(a/10);
putchar(a%10+'0');
}
ll n,Money,FarmerJohn,Bessie;
bool Turn;
vector<ll> Coin;
int main(){
n=Read();
while(n--) Money=Read(),Coin.push_back(Money);
sort(Coin.begin(),Coin.end());
while(Coin.size()){
if(!Turn){
if(FarmerJohn<Coin[0]) FarmerJohn+=Coin[0],Coin.erase(Coin.begin());
else FarmerJohn+=Coin[upper_bound(Coin.begin(),Coin.end(),FarmerJohn)-Coin.begin()-1],Coin.erase(upper_bound(Coin.begin(),Coin.end(),FarmerJohn)-1);
}
else{
if(Bessie<Coin[0]) Bessie+=Coin[0],Coin.erase(Coin.begin());
else Bessie+=Coin[upper_bound(Coin.begin(),Coin.end(),Bessie)-Coin.begin()-1],Coin.erase(upper_bound(Coin.begin(),Coin.end(),Bessie)-1);
}
Turn=!Turn;
}
Write(FarmerJohn),putchar(' '),Write(Bessie);
return 0;
}