rt,只能过子任务1
#include <bits/stdc++.h>
using namespace std;
int zhengjishu[100006],a;
int zhengoushu[100006],b;
int fujishu[100006],c;
int fuoushu[100006],d;
int n;
int ans;
int q;
bool cmp(int a, int b)
{
if (a > b)
{
return true;
}
else
{
return false;
}
}
void chushihua()
{
stable_sort(zhengjishu + 1, zhengjishu + a + 1, cmp);
stable_sort(zhengoushu + 1, zhengoushu + b + 1, cmp);
stable_sort(fujishu + 1, fujishu + c + 1);
stable_sort(fuoushu + 1, fuoushu + d + 1);
}
int main()
{
cin >> n;
for (int i = 1; i <= n; i++)
{
int k;
cin >> k;
if (k % 2 == 0)
{
if (k > 0)
{
zhengoushu[++b] = k;
}
else
{
fuoushu[++d] = k;
}
}
else
{
if (k > 0)
{
zhengjishu[++a] = k;
}
else
{
fujishu[++c] = k;
}
}
}
int a1 = 1; int b1 = 1; int c1 = 1; int d1 = 1;
chushihua();
for (int i = 1; i <= n; i++)
{
//cout << endl << ans << endl;
if (i % 2 == 1)
{
if (b1 <= b || c1 <= c)
{
if (zhengoushu[b1] > abs(fujishu[c1])&&b>=b1)
{
//cout << zhengoushu[b1]<<endl;
ans += q+zhengoushu[b1];
q += zhengoushu[b1];
b1++;
}
else
{
//cout << fujishu[c1] << endl;
ans += q + fujishu[c1];
q += abs(fujishu[c1]);
c1++;
}
}
else
{
if (zhengjishu[a] < abs(fuoushu[d])&&a>=a1)
{
//cout << zhengjishu[a] << endl;
ans += q + zhengjishu[a];
q -= zhengjishu[a];
a--;
}
else
{
//cout << fuoushu[d] << endl;
ans += q + fuoushu[d];
q -= abs(fuoushu[d]);
d--;
}
}
}
else
{
if (a1 <= a || d1 <= d)
{
if (zhengjishu[a1] > abs(fuoushu[d1]) && a >= a1)
{
//cout << zhengjishu[a1]<<endl;
ans += q + zhengjishu[a1];
q += zhengjishu[a1];
a1++;
}
else
{
//cout << fuoushu[d1]<<endl;
ans += q + fuoushu[d1];
q += abs(fuoushu[d1]);
d1++;
}
}
else
{
if (zhengoushu[b] < abs(fujishu[c]) && b >= b1)
{
//cout << zhengoushu[b]<<endl;
ans += q + zhengoushu[b];
q -= zhengoushu[b];
b--;
}
else
{
//cout << fujishu[c]<<endl;
ans += q + fujishu[c];
q -= abs(fujishu[c]);
c--;
}
}
}
}
cout << ans;
}
/*for (int i = 1; i <= a; i++)
{
cout << zhengjishu[i] << " ";
}cout << endl;
for (int i = 1; i <= b; i++)
{
cout << zhengoushu[i] << " ";
} cout << endl;
for (int i = 1; i <= c; i++)
{
cout << fujishu[i] << " ";
}cout << endl;
for (int i = 1; i <= d; i++)
{
cout << fuoushu[i] << " ";
}cout << endl;
*/