zstu月赛 招生

题目

 浙江理工大学招生,一开始有0名学生报考,现在有如下几种情况;

1.增加一名报考学生,报考学生成绩为x;

2.一名成绩为x的学生放弃报考。

3.从现在报考的学生来看,老师想知道如果要招生至少x名学生,需要将分数线最高设置为多少;

4.从现在报考的学生来看,如果分数线设置为x,能有几名学生被录取。

第一行先输入一个n,表示有n次操作或查询;

接下来n行,每行输入两个整数opt和x(用空格隔开):

如果opt为1,则增加一名报考学生,报考学生成绩为x;

如果opt为2,则表示一名成绩为x的学生放弃报考。

如果opt为3,从现在报考的学生来看,老师想知道如果要招生至少x名学生,需要将分数线最高设置为多少,输出最高分数线。

如果opt为4,从现在报考的学生来看,如果分数线设置为x,能有几名学生被录取,输出录取人数。

对于每个输出占一行。

n不超过50000;0<=x<=1000000;1<=k<=现在的学生数。

Input

第一行输入一个n,接下来n行,每行输出两个整数opt,x,用空格隔开

Output

对于每次输出, 输出一个整数占一行

据说正解是线段树平衡树Treap什么之类的,不懂不懂

下面代码:

opt==3部分 可以直接访问v[num]

 1 vector<int>v; 
 2 vector<int>::iterator it; 
 3   
 4 int main() 
 5 { 
 6     int n,x,opt; 
 7     cin>>n; 
 8     int cnt=0; 
 9     while(n--) 
10     { 
11         scanf("%d%d",&opt,&x); 
12         if(opt==1) 
13         { 
14             cnt++; 
15             v.insert(lower_bound(v.begin(),v.end(),x) ,x); 
16             /*for(it=v.begin();it!=v.end();it++) 
17             { 
18                 cout<<*it<<' '; 
19             }*/
20         } 
21         else if(opt==2) 
22         { 
23             cnt--; 
24             v.erase( lower_bound(v.begin(),v.end(),x) ); 
25             /*for(it=v.begin();it!=v.end();it++) 
26             { 
27                 cout<<*it<<' '; 
28             }*/
29         } 
30         else if(opt==3) 
31         { 
32             int num=cnt-x; 
33             for(it=v.begin();it!=v.end();it++) 
34             { 
35                 if(num==0) 
36                 { 
37                     cout<<*it<<endl; 
38                     break; 
39                 }    
40                 num--; 
41             } 
42         } 
43         else if(opt==4) 
44         { 
45             int cant; 
46             cant=lower_bound(v.begin(),v.end(),x)-v.begin(); 
47             cout<<cnt-cant<<endl; 
48         } 
49     }    
50 } 
51 /************************************************************** 
52     Problem: 4405 
53     User: ys1810z17 
54     Language: C++ 
55     Result: Accepted 
56     Time:664 ms 
57     Memory:1464 kb 
58 ****************************************************************/
vector

猜你喜欢

转载自www.cnblogs.com/thunder-110/p/9902156.html