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;
}
相关推荐
Coovally AI模型快速验证2 小时前
农田扫描提速37%!基于检测置信度的无人机“智能抽查”路径规划,Coovally一键加速模型落地
深度学习·算法·yolo·计算机视觉·transformer·无人机
mit6.8242 小时前
[openvela] Hello World :从零开始的完整实践与问题复盘
c++·嵌入式硬件
pusue_the_sun2 小时前
数据结构:二叉树oj练习
c语言·数据结构·算法·二叉树
RaymondZhao343 小时前
【全面推导】策略梯度算法:公式、偏差方差与进化
人工智能·深度学习·算法·机器学习·chatgpt
zhangfeng11333 小时前
DBSCAN算法详解和参数优化,基于密度的空间聚类算法,特别擅长处理不规则形状的聚类和噪声数据
算法·机器学习·聚类
啊阿狸不会拉杆4 小时前
《算法导论》第 32 章 - 字符串匹配
开发语言·c++·算法
小学生的信奥之路4 小时前
洛谷P3817题解:贪心算法解决糖果分配问题
c++·算法·贪心算法
曙曙学编程5 小时前
stm32——GPIO
c语言·c++·stm32·单片机·嵌入式硬件
你知道网上冲浪吗5 小时前
【原创理论】Stochastic Coupled Dyadic System (SCDS):一个用于两性关系动力学建模的随机耦合系统框架
python·算法·数学建模·数值分析
△曉風殘月〆5 小时前
Visual Studio中的常用调试功能(下)
c++·ide·visual studio·调试