20分求助
  • 板块P2073 送花
  • 楼主qqqqq111
  • 当前回复6
  • 已保存回复6
  • 发布时间2022/3/10 19:39
  • 上次更新2023/10/28 06:54:23
查看原帖
20分求助
313137
qqqqq111楼主2022/3/10 19:39
#include <cstdio>
#include <set>

using namespace std;

set<int> s;
unsigned int t[1000000];
long long sumw=0, sumc=0;

int main() {
	int op;
	scanf("%d", &op);
	while(op!=-1) {
		switch(op) {
			case 1:
				int w, c;
				scanf("%d%d", &w, &c);
				if(t[c])
					break;
				s.insert(c);
				t[c]=w;
				sumc+=c;
				sumw+=w;
				break;
			case 3:
				if(s.empty())
					break;
				sumw-=t[*(s.begin())];
				sumc-=*(s.begin());
				s.erase(*s.begin());
				break;
			case 2:
				if(s.empty())
					break;
				sumw-=t[*(s.rbegin())];
				sumc-=*(s.rbegin());
				s.erase(*s.rbegin());
				break;
		}
		scanf("%d", &op);
	}
	printf("%lld %lld", sumw, sumc);
	return 0;
}
2022/3/10 19:39
加载中...