1. 程式人生 > >招生(vector,有序插入insert),遍歷

招生(vector,有序插入insert),遍歷

== -a cto targe man const clas efi tex

招生

#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),遍歷