例题链接:https://vjudge.net/contest/236677#problem/D

题意:首先输入两个数字n,m。n表示有n张桌子,编号从1到n,m表示有m个操作,  然后接下来一行有n个数字,每个数字表示第i张桌子有ni张凳子,  接下来的m个操作里,每个操作有一个字符串str,加一个数字ch,  如果str==in,表示有ch个人的小队要坐下来,然后要我们找到凳子大于等于ch的ni值最小的然后编号最小的桌子(首先保证求所有大于等于ch里ni最小的数字,如果最小的ni有多个,取编号最小的),然后输出桌子编号,如果没有这样的桌子输出-1。当str==out时,表示做在编号为ch的桌子上的小队离开了,又可以坐人了。

这里看了其他的博客说要用set<pair<int,int> >(注意两个> >中间要加空格隔开),因为set会自动升序排列,然而这里每一个元素都是pair,它排列是先排pair里的first,再排second。比如说pair<2,3> pair<2,1> pair<0,6>排列之后是pair<0,6>,pair<2,1>,pair<2,3>。

介绍完排列规则,再自己看一下代码,理解一下就可以了。

#include<iostream>
#include<cstring>
#include<set>
using namespace std;
set<pair<int,int> >ss;
set<pair<int,int> >::iterator it;
int n,m,ch,num[];
char str[];
int main()
{
while(cin>>n>>m)
{
for(int i=;i<=n;i++)
{
cin>>num[i];
ss.insert(make_pair(num[i],i));//插入
}
for(int i=;i<=m;i++)
{
cin>>str>>ch;
if(str[]=='i')
{
it=ss.lower_bound(make_pair(ch,));//找最小的
if(it==ss.end())
cout<<-<<endl;
else
{
cout<<it->second<<endl;
ss.erase(it);//删除
}
}
else if(str[]=='o')
{
ss.insert(make_pair(num[ch],ch));
}
}
}
return ;
}

set<pair<int,int> >的用法的更多相关文章

  1. set<pair<int,int> > 的运用

    In this cafeteria, the N tables are all ordered in one line, where table number 1 is the closest to ...

  2. binarySearch(int[] a,int fromIndex,int toIndex, int key)的用法

    package com.Summer_0420.cn; import java.util.Arrays; /** * @author Summer * binarySearch(int[] a,int ...

  3. Python中int()函数的用法浅析

      int()是Python的一个内部函数 Python系统帮助里面是这么说的 >>> help(int)  Help on class int in module __builti ...

  4. c++ 中pair类模板的用法详解

    pair: 头文件:#include<utility> 类模板:template <class T1, class T2> struct pair 参数:T1是第一个值的数据类 ...

  5. 数制转换itoa atoi int转字符串 字符串转int string转int int转string

    在苦于昨晚最后一个数制转换题,他的转换结果必须是整形数,纳尼?转换完放数组里又要变成整形数.这是什么操作,而且如果是16进制,用字母A,B-表示,在进行运算时都难以计算. 突发奇想,当十进制成立的时候 ...

  6. C语言复杂声明-void (*signal(int sig, void (*handler)(int)))(int);

    问题提出 请分析此声明:void (*signal(int sig, void (*handler)(int)))(int); 求解过程 在对上面的例子作分析之前,我们需要了解C语言的声明优先级,&l ...

  7. Undefined symbols for architecture i386: "MyGetOpenALAudioData(__CFURL const*, int*, int*, int*)"

    今天把apple developer上的例子程序oalTouch中的MyOpenALSupport.h和MyOpenALSupport.c添加到自己的工程中,并在另一个文件xxx.cpp里调用,结果出 ...

  8. 自定义函数中的参数返回值 “-> (Int -> Int)”的问题

    func makeIncrementer() -> (Int -> Int) { func addOne(number: Int) -> Int { + number } retur ...

  9. void (*f(int, void (*)(int)))(int) 函数解析 转

    今天与几个同学看到了一个函数指针定义: void (*f(int, void (*)(int)))(int) 以前在C trap pit fails里面见过,但是文章里面介绍的很详细,但是往往使初学者 ...

随机推荐

  1. Android自定义View学习(四)

    硬件加速 参考:HenCoder Android 自定义 View 1-8 硬件加速 硬件加速能够让绘制变快,主要有三个原因: 本来由 CPU 自己来做的事,分摊给了 GPU 一部分,自然可以提高效率 ...

  2. Ubuntu的常用快捷键(摘自网络)

    篇一 : Ubuntu的复制粘贴操作及常用快捷键(摘自网络) Ubuntu的复制粘贴操作 1.最为简单,最为常用的应该是鼠标右键操作了,可以选中文件,字符等,右键鼠标,复制,到目的地右键鼠标,粘贴就结 ...

  3. leetcode212

    class Solution { public List<String> findWords(char[][] board, String[] words) { List<Strin ...

  4. 机器学习入门-数值特征-进行多项式变化(将特征投影到高维度上) 1.PolynomialFeatures(将数据变化为多项式特征)

    函数说明: 1. PolynomialFeatures(degree=2, interaction_only=False, include_bias=False) 参数说明:degree=2,表示多项 ...

  5. js页面停留时间

    //在线阅读时间 function onlineRead(minutes){ var o= new Object(); o.courseId=courseId; o.userId=userId; o. ...

  6. Delphi 文件目录相关的操作函数

    需要User   SysUtils 取文件名 ExtractFileName(FileName); 取文件扩展名: ExtractFileExt(filename); 取文件名,不带扩展名: 方法一: ...

  7. RESET MASTER和RESET SLAVE使用场景和说明,以及清除主从同步关系

    mysql主从复制中,需要将从库提升为主库,需要取消其从库角色,这可通过执行RESET SLAVE ALL清除从库的同步复制信息.包括连接信息和二进制文件名.位置.从库上执行这个命令后,使用show ...

  8. UnityHub破解

    1.退出UnityHub,安装好nodejs执行以下命令 npm install -g asar 2.打开UnityHub安装目录如 C:\Program Files\Unity Hub\resour ...

  9. 命令行下将磁盘从GPT转换为MBR

    1.在系统提示无法安装的那一步,按住“shift+f10”,呼出“cmd”命令符 2.输入:diskpart,回车 进入diskpart 3.输入:list disk,回车 显示磁盘信息 4.输入:s ...

  10. C++ 与 CDC相关的知识,点滴总结

    hdc = GetDC (hwnd) ; GetDc函数:用于获得hWnd参数所指定窗口的客户区域的一个设备环境. 所获得的设备环境可以是通用.类或者私有类型,具体由指定窗口的类风格决定.对于通用设备 ...