例题链接: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. 【JEECG技术文档】Online唯一校验使用说明

    1.功能介绍 配置了唯一校验的字段,在录入和编辑页面中,动态查询用户输入值是否存在校验. 要使用online唯一校验功能必须先在online表单开发中配置唯一字段的校验方式为唯一校验. 2.配置唯一校 ...

  2. C++ primer ch6 函数基础-1

    1.形参和实参:编译器并没有规定实参的求值顺序. 类似下面的代码,其行为是未定义的: ; printf("%d %d\n",++i,++i); 2.变量的初始化: 如果内置类型的变 ...

  3. jsp开发环境搭建(windows64位)

    有些东西当时学和用的时候很熟练,但如果时间久了不用了,再次遇到的时候,也会很生疏,现在对一般的jsp网站开发环境的搭建做一个小结,以备以后不时之需,作为参考手册用. 一.java环境搭建 1.下载jd ...

  4. Innodb独立的undo tablespace

    [MySQL5.6] Innodb独立的undo tablespace   在MySQL5.6中开始支持把undo log分离到独立的表空间,并放到单独的文件目录下:这给我们部署不同IO类型的文件位置 ...

  5. Python中os模块使用方法

    os模块提供了对系统环境.文件.目录等操作系统级的接口函数.本文主要描述os模块和os.path模块常用函数以及常用实例. os模块函数 os.getcwd() 获取当前工作的目录. os.listd ...

  6. MySQL缓存分类和配置

    读书笔记,待补充完善 MySQL缓存分类 InnoDB缓冲池 InnoDB日志文件和MyIsAM数据的操作系统缓存 MyIsAM键缓存 查询缓存 无法手工配置的缓存,二进制日志,表定义文件的操作系统缓 ...

  7. java解决查找问题

    1.给定一个字符串,找到里面的大写字母和小写字母以及其他字母的个数: 代码: package test; public class Stringclass { public static void m ...

  8. VC++ 获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法

    1.使用CTime类(获取系统当前时间,精确到秒) CString str; //获取系统时间 CTime tm; tm=CTime::GetCurrentTime();//获取系统日期 str=tm ...

  9. FMS Dev Guide学习笔记

    翻译一下其中或许对游戏开发有用的一个章节 一.开发交互式的媒体应用程序 1.共享对象(Shared objects)     ----关于共享对象     使用共享对象可以同步用户和存储数据.共享对象 ...

  10. SPSS-生存分析

    生存分析 定义:一些医学事件所经历的时间:从开始观察到事件发生的时间,不是短期内可以明确判断的.针对这类生存资料的分析方法叫生存分析.生存分析的基本概念1.终点事件终点事件outcome event: ...