sample.in
1 1 1
1 2 5
2
1 3 3
3
1 5 2
-1
sample.out
8 5
Code:
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e6 + 10;
int op, t, w, c, f[N];
set <int> s;
signed main()
{
while(cin >> op)
{
if (op == -1)
break;
switch(op)
{
case 1:
{
cin >> w >> c;
if (f[c] == 0)
{
s.insert(c);
f[c] = w;
}
break;
}
case 2:
{
if (s.size())
{
f[*(--s.end())] = 0;
s.erase(--s.end());
}
break;
}
default:
{
if (s.size())
{
f[*(s.begin())] = 0;
s.erase(s.begin());
}
break;
}
}
}
int ans = 0, cnt;
for (int i : s)
ans += f[i], cnt += i;
cout << ans << " " << cnt << endl;
return 0;
}