牛客练习赛50,B tokitsukaze and Hash Table(STL+输入输出挂)

用STL中的set维护空位,当当前空位已经有元素时,用lower_bound()找到下一个空位。
但是这道题容易卡常(因为卡常WA了一次),后来改用输入输出挂就AC了。
代码如下:

#include
#include
#include
#include
using namespace std;
const int maxn=1e6+5;
set S;
bool vis[maxn];
int a[maxn],b[maxn];

inline void read(int &ret)
{
	char c;
	while((c=getchar())&&(c>'9'||c<'0'));
	ret=0;
	while(c>='0'&&c<='9')	ret=ret*10+c-'0', c=getchar();
 } 

inline void out(int x) 
{
	if(x>9)	out(x/10);
	putchar(x%10+'0');
}

int main()
{
    int n;
    read(n);
    for(int i=0;i:: iterator it=S.lower_bound(x);
            if(it==S.end())
                it=S.lower_bound(0);
            vis[(*it)]=1;
            b[(*it)]=a[i];
            S.erase((*it));
        }
    }
    for(int i=0;i

你可能感兴趣的:(STL)