赛时就没做出来这题,现在再写又炸了
所以求助
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n , mon[1005] , fj , bs;
bool used[1005];
int main()
{
cin >> n;
for(ll i = 1; i <= n; i++)
{
cin >> mon[i];
}
char pos = 'F';
while(n != 0)
{
if(pos == 'F')
{
bool flag = false; //判断到底用方法1还是2
sort(mon + 1 , mon + n + 1);
for(ll i = 1; i <= n; i++)
{
if(used [i] == false && fj > mon[i])
{
flag = true;
}
}
if(flag == true) //方法1
{
for(ll i = 1; i <= n; i++)
{
if(used[i] == false && fj <= mon[i])
{
fj += mon[i];
n--;
used[i] = true;
}
break;
}
}
if(flag == false)
{
fj += mon[1]; //方法2
n -= 1;
used[1] = true;
}
pos = 'B';
continue;
}
if(pos == 'B')
{
bool flag = false; //判断到底用方法1还是2
sort(mon + 1 , mon + n + 1);
for(ll i = 1; i <= n; i++)
{
if(used[i] == false && fj > mon[i])
{
flag = true;
}
}
if(flag == true) //方法1
{
for(ll i = 1; i <= n; i++)
{
if(used[i] == false && fj <= mon[i])
{
bs += mon[i];
n--;
used[i] = true;
}
break;
}
}
if(flag == false)
{
bs += mon[1]; //方法2
n -= 1;
used[1] = true;
}
pos = 'F';
continue;
}
}
cout << fj << " " << bs << endl;
return 0;
}
问为什么一个红题写90行? 答曰我太菜了。。。