求助
  • 板块灌水区
  • 楼主Braised_fish
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/11/30 14:06
  • 上次更新2024/11/30 15:31:52
查看原帖
求助
992550
Braised_fish楼主2024/11/30 14:06

题目

洛谷团队作业

题目描述

老师每次在洛谷团队里布置了作业之后,都十分关心同学们的完成进展。

当然,竞赛班里不断有新同学加入,每当有新同学加入,老师就会把他也拉入团队。新加入的同学常常有很牛的人,一加入团队就会在很短的时间内把自己的作业分数刷到新高。

老师为了分析同学们的学习情况,常会进行三种操作:

操作代码一:0 X0~X //一次加入团队作业操作,正整数XX表示该新加入同学的作业得分

操作代码二:11 //一次退出团队作业操作,(就当时而言)最后加入团队的同学退出作业

操作代码三:22 //一次查询操作,老师想要知道当前团队里完成作业分数的最高值

当团队作业人数为 00 时,如果老师此时查询,你的程序应该输出 00

输入格式

输入数据有 n+1n+1 行,第一行一个正整数 nn,表示老师操作的次数。

接下来 nn 行,分别属于以下三种格式之一:

操作代码一:0 X0~X (注意中间有一个空格)

操作代码二:11

操作代码三:22

意义见题面描述。

输出格式

输出若干行,你的程序需要对每一次的查询操作(格式33)返回一个查询结果,即查询时的团队作业最高分。

注意,每个查询结果应该独立在一行。

样例 #1

样例输入 #1

13
0 1
0 2
2
0 4
0 2
2
1
2
1
1
2
1
2

样例输出 #1

2
4
4
1
0

提示

n200,000n≤200,000

我的代码

#include "bits/stdc++.h"
using namespace std;
stack<int> s;
int n, num, a, x;

int main() {
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> a;
		if (a == 0) {
			cin >> x;
			if (x > num) {
				num = x;
			}
			s.push(x);
		} else if (a == 1) {
			s.pop();
		} else if(a==2){
			if (s.size() != 0) {
				cout << num << endl;
			} else {
				cout << "0" << endl;
			}
		}
	}
	return 0;
}

嘤嘤嘤,只能拿十六分。。。

2024/11/30 14:06
加载中...