招生(vector,有序插入insert),遍历
Posted liuyongliu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了招生(vector,有序插入insert),遍历相关的知识,希望对你有一定的参考价值。
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <string> #include <vector> #include <stack> #include <map> #include <set> #include <queue> #include <list> #include <cstdlib> #include <iterator> #include <cmath> #include <iomanip> #include <bitset> #include <cctype> using namespace std; #define cin_1(a) scanf("%d",&a) #define cin_2(a,b) scanf("%d%d",&a,&b) #define cin_3(a,b,c) scanf("%d%d%d",&a,&b,&c) #define max_3(a,b,c) max(max(a,b),c) #define ll long long #define rint register int #define mem0(x) memset(x, 0, sizeof(x)) #define mem1(x) memset(x, -1, sizeof(x)) /** vector<int>::iterator it; for(it=vec.begin();it!=vec.end();it++) cout<<*it<<endl; */ ///2147483647 -2147483648 ///9223372036854775807 -9223372036854775808 const int inf = 0x3f3f3f3f; const ll inff = 0x3f3f3f3f3f3f3f3f; //map<ll,ll>mp; //set<ll>st; vector<int>a; /***********************************************/ ///http://oj.acm.zstu.edu.cn/JudgeOnline/problem.php?id=4405 ///招生 int main() { int n; cin>>n; int cnt=0; while(n--) { int opt,x; cin>>opt>>x; if(opt==1) { cnt++;///插入第一个比x大的位置前面(升序) a.insert(lower_bound(a.begin(),a.end(),x),x);//<-<- } else if(opt==2) { cnt--; a.erase(lower_bound(a.begin(),a.end(),x));//<-<- } else if(opt==3) { if(cnt-x>=0) { int p=cnt-x; ///输出第p个成绩 cout<<a[p]<<endl; } } else { ///总数减去小于x的人数,即为被录取的人数 cout<<cnt-(lower_bound(a.begin(),a.end(),x)-a.begin())<<endl;//<-<- } } return 0; }
以上是关于招生(vector,有序插入insert),遍历的主要内容,如果未能解决你的问题,请参考以下文章
插入排序—直接插入排序(Straight Insertion Sort)