40分,暴力deque,没T但WA?
  • 板块P9518 queue
  • 楼主Ferm_Tawn
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/8/13 11:24
  • 上次更新2023/11/3 04:07:52
查看原帖
40分,暴力deque,没T但WA?
559847
Ferm_Tawn楼主2023/8/13 11:24
// Problem: P9518 queue
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P9518
// Memory Limit: 512 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include<bits/stdc++.h>
using namespace std;
int t;
char g1 = '1' , g2 = '1';
deque<char> q;
map<char , int> mp;
int main(){
	cin >> t;
	while(t--){
		char s;
		string op;
		cin >> op;
		if(op == "arrive"){
			cin >> s;
			if(mp[s]) cout << "Error\n";
			else{
				mp[s] = 1;
				cout << "OK\n";
				q.emplace_back(s);
			}
		}
		else if(op == "leave"){
			cin >> s;
			//cout << s << " " << op << endl;
			bool flag = false;
			for(int i = 0 ; i < q.size() ; i++){
				if(q[i] == s){
					if(i < 2){
						cout << "Error\n";
						flag = true;
						break;
					}
					else{
						mp[s] = 0;
						cout << "OK\n";
						flag = true;
						//cout << mp[s] << " " << s << endl;
						q.erase(q.begin() + i);
					}
				}
			}
			if(flag == false) cout << "Error\n";
		}
		else{
			int cnt = 0;
			while(!q.empty()){
				if(cnt == 2) break;
				int p = q.front();
				if(p != g1 && p != g2) break;
				q.pop_front();
				q.push_back(p);
				cnt++;
			}
			g1 = '1' , g2 = '1';
			cnt = 0;
			if(q.empty()){
				cout << "Error\n";
				continue;
			}
			while(!q.empty()){
				if(cnt == 2) break;
				if(g1 == '1') g1 = q.front();
				else g2 = q.front();
				cout << q.front() << " ";
				q.pop_front();
				cnt++;
			}
			if(g2 != '1') q.push_front(g2);
			if(g1 != '1') q.push_front(g1);
			cout << endl;
		}
	}
	return 0;
}
2023/8/13 11:24
加载中...