标签:
显然这题的所有操作都可以用set,但是直接用set肯定要T,考虑到读入量较大,使用fread读入优化,就可以卡过去了。
#include<bits/stdc++.h>
using namespace std;
void read(int& x){
const int k=1600000;
static char v,
u[k],*s=u,*t=u;
x=0;
while(isspace(v=s==t
&&u==(t=u+fread(s=u,
1,k,stdin))?-1:*s++));
do
x=x*10+v-48;
while(isdigit(v=s==t
&&u==(t=u+fread(s=u,
1,k,stdin))?-1:*s++));
}
int main(){
set<int> s;
set<int>::iterator i;
int n,m,u,v;
read(n),read(m);
while(m--){
read(u);
if(u!=3&&u!=4)
read(v);
if(u==1)
s.insert(v);
if(u==2)
s.erase(v);
if(u==5)
printf("%d\n",
(i=s.lower_bound(v))
!=s.begin()?*--i:-1);
if(u==6)
printf("%d\n",
(i=s.upper_bound(v))
!=s.end()?*i:-1);
if(u==7)
printf("%d\n",
s.count(v)?1:-1);
if(u==3)
printf("%d\n",
s.size()?*s.begin():-1);
if(u==4)
printf("%d\n",
s.size()?*--s.end():-1);
}
}
bzoj3685: 普通van Emde Boas树 set+读入优化
标签:
原文地址:http://www.cnblogs.com/f321dd/p/5496098.html