为啥40wa,考场上也没调出来
  • 板块P9518 queue
  • 楼主Rainbow_Sky
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/8/12 21:16
  • 上次更新2023/11/3 04:11:56
查看原帖
为啥40wa,考场上也没调出来
560714
Rainbow_Sky楼主2023/8/12 21:16
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxm=1e5+10;
const int maxn=1e3+10;
const int mod=1e9+7;
inline int read(){
	int x=0,y=1;char c=getchar();
	for(;c<'0'||c>'9';c=getchar())if(c=='-')y=-1;
	for(;c>='0'&&c<='9';c=getchar())x=(x<<1)+(x<<3)+(c^48);
	return x*y;
}
int a[maxm];
map<string,bool>mp;
string s1="nigannnnnn",s2="nigannnnnn";
deque<string>q;
void start()
{
	if(s1!="nigannnnnn")
	{
		q.pop_front();
		q.push_back(s1);
		if(s2!="nigannnnnn")
		 q.pop_front(),q.push_back(s2);
	}
	s1="nigannnnnn",s2="nigannnnnn";
	if(!q.empty())
	{
		while(1)
		{
			if(q.empty()) break;
			if(mp[q.front()]!=0)
			{
				break;
			 } 
			q.pop_front();
		}
		if(!q.empty())
		s1=q.front(),q.pop_front();
	}
	if(!q.empty())
	{
		while(1)
		{
			if(q.empty()) break;
			if(mp[q.front()]!=0) break;
			q.pop_front();
		}
		if(!q.empty())
		s2=q.front(),q.pop_front();
	}
	if(s1=="nigannnnnn") cout<<"Error\n";
	else
	if(s2=="nigannnnnn")
	{
		cout<<s1<<"\n";
		q.push_front(s1);
	 } 
	else
	{
		cout<<s1<<" "<<s2<<"\n";
		q.push_front(s2);
		q.push_front(s1);
	}
}
void arrive(string suv)
{
	if(!q.empty())
	while(1)
	{
		if(mp[q.front()]!=0) break;
		q.pop_front();
		if(q.empty()) break;
	}
	if(suv!=s1&&suv!=s2&&mp[suv]==0) 
	{
		q.push_back(suv);
		mp[suv]=1;	
		cout<<"OK\n";
		return ;
	}
	else
	{
		cout<<"Error\n";
		return ;
	}
}
void leave(string suv)
{
	if(suv!=s1&&suv!=s2&&mp[suv]==1)
	{
		mp[suv]=0;
		cout<<"OK\n";
		return ;
	}
	else
	{
		cout<<"Error\n";
	}
}
signed main()
{
	int n=read();
	while(n--)
	{
		string s,sx;
		cin>>s;
		if(s=="arrive") cin>>sx,arrive(sx);
		else if(s=="start") start();
		else if(s=="leave") cin>>sx,leave(sx);
	}
	return 0;
}
2023/8/12 21:16
加载中...