AT_abc212_d [ABC212D] Querying Multiset

链接:AT_abc212_d [ABC212D] Querying Multiset - 洛谷

题目描述

高橋君は何も書かれていないたくさんのボールと 1 つの袋を持っています。 最初、袋は空で、高橋君は Q 回の操作を行います。 それぞれの操作は以下の 3 種類のうちのいずれかです。

  • 操作 1 : まだ何も書かれていないボール 1 つに整数 Xi を書き込み、袋に入れる。
  • 操作 2 : 袋に入っているすべてのボールについて、そこに書かれている数を、それに Xi を加えたものに書き換える。
  • 操作 3 : 袋に入っているボールのうち書かれている数が最小のもの(複数ある場合はそのうちの 1 つ)を取り出し、そこに書かれている数を記録する。その後、そのボールを捨てる。

1≤ i≤ Q について i 回目の操作の種類 Pi​ および操作 1 , 2 における Xi​ の値が与えられるので、操作 3 において記録された数を順に出力してください。

输入格式

入力は以下の形式で標準入力から与えられる。

Q query1​ query2​ : queryQ​

2 行目から Q+1 行目の各 queryi​ は次のいずれかの形で与えられる。

1 Xi​
2 Xi​
3

まず、1≤ Pi​≤ 3 が与えられる。これは操作の種類を表す。 Pi​=1 または Pi​=2 ならば、その後に空白区切りで Xi​ が与えられる。

输出格式

Q 回の操作のうち操作の種類が Pi​=3 であるような各操作について、記録された数を改行区切りで出力せよ。

隐藏翻译

题意翻译

给定一个集合和 Q 次操作,每个操作可能是以下操作之一:

  • 第一个操作给定整数 x,表示将 x 放入集合。

  • 第二个操作给定整数 x,表示将集合的数分别加上 x。

  • 第三个操作将集合最小的数删除。

对于每个第三个操作,输出你删去的数。

保证 1≤Q≤2×105,操作种类 op∈{1,2,3},1≤x≤109。

输入输出样例

输入 #1复制运行

复制代码
5
1 3
1 5
3
2 2
3

输出 #1复制运行

复制代码
3
7

输入 #2复制运行

复制代码
6
1 1000000000
2 1000000000
2 1000000000
2 1000000000
2 1000000000
3

输出 #2复制运行

复制代码
5000000000

说明/提示

制約

  • 1 ≤ Q ≤ 2× 105
  • 1 ≤ Pi ≤ 3
  • 1 ≤ Xi ≤ 109
  • 入力は全て整数である。
  • Pi=3 であるような i が 1 つ以上存在する。
  • Pi=3 であるとき、 i 回目の操作の直前の時点で、袋には 1 つ以上のボールが入っている。

Sample Explanation 1

高橋君は次のように操作を行います。 - 3 の書かれたボールを袋に入れる。 - 5 の書かれたボールを袋に入れる。 - 今、袋には 3 の書かれたボールと 5 の書かれたボールが入っているため、このうち小さい 3 の書かれたボールを取り出し、 3 を記録した後に捨てる。 - 今、袋には 5 の書かれたボールのみが入っているため、この数を 5+2=7 に書き換える。 - 今、袋には 7 の書かれたボールのみが入っているため、このボールを取り出し、 7 を記録した後に捨てる。 よって、記録された順に 3 , 7 を出力します。

Sample Explanation 2

答えが 32 bit整数に収まらないことがある事に注意してください。

C++代码如下:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;

int main(){
    int n;
    cin>>n;
    priority_queue<int,vector<int>,greater<int>> q;
    long long sum=0;
    for(int i=0;i<n;i++){
        int a;
        cin>>a;
        if(a==1){
            int b;
            cin>>b;
            q.push(b-sum);
        }
        if(a==2){
            int c;
            cin>>c;
            sum+=c;
        }
        if(a==3){
            cout<<q.top()+sum<<endl;
            q.pop();
        }
    }
    return 0;
}
相关推荐
一定要AK23 分钟前
2025—暑期训练一
算法
一定要AK27 分钟前
贪心专题练习
算法
秋风&萧瑟31 分钟前
【C++】C++中的友元函数和友元类
c++
梁诚斌1 小时前
使用OpenSSL接口读取pem编码格式文件中的证书
开发语言·c++
森焱森1 小时前
无人机三轴稳定控制(2)____根据目标俯仰角,实现俯仰稳定化控制,计算出升降舵输出
c语言·单片机·算法·架构·无人机
ytttr8732 小时前
matlab通过Q学习算法解决房间路径规划问题
学习·算法·matlab
小张成长计划..2 小时前
数据结构-栈的实现
开发语言·数据结构
go54631584653 小时前
修改Spatial-MLLM项目,使其专注于无人机航拍视频的空间理解
人工智能·算法·机器学习·架构·音视频·无人机
油泼辣子多加3 小时前
【Torch】nn.BatchNorm1d算法详解
算法
nlog3n3 小时前
基于 govaluate 的监控系统中,如何设计灵活可扩展的自定义表达式函数体系
算法·go