萌新20pts求助(调了两小时硬是没调出来)
  • 板块P9518 queue
  • 楼主LightSpot
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/8/12 20:20
  • 上次更新2023/11/3 04:12:52
查看原帖
萌新20pts求助(调了两小时硬是没调出来)
685183
LightSpot楼主2023/8/12 20:20
#include<bits/stdc++.h>
using namespace std;
queue<string>q;
int n;
int str[500010];
int v(string a)
{
	int sum = 0 , l = a.size();
	for(int i = 0 ; i < l ; i++)
	{
		sum += a[i] * (i + 1) + 1 + i - a[i + 1] / 12;
		if(i >= 1) sum += a[i - 1] * (sqrt(a[i]) - sqrt(i));
	}
	return sum;
}
string td[3] = {"qewifvsfdtgreuyakjfdsknre" , "qewifvsfdtgreuyakjfdsknre" , "qewifvsfdtgreuyakjfdsknre"};
int main()
{
	cin >> n;
	while(n--)
	{
		string s;
		cin >> s;
		if(s == "start")
		{
			for(int i = 1 ; i <= 2 ; i++)
			{
				if(td[i] != "qewifvsfdtgreuyakjfdsknre")
				{
					int val = v(td[i]);
					if(str[val] == 2)
					{
						q.push(td[i]);
						str[val] = 1;
					}
					td[i] = "qewifvsfdtgreuyakjfdsknre";
				}
			}
			if(q.empty()) cout << "Error";
			else
			{
				int y = 2;
				int k = 1;
				for(int i = 1 ; i <= y ; i++)
				{
					if(q.empty()) break;
					else
					{
						string t = q.front();
						int val = v(t);
						if(str[val] == 0)
						{
							q.pop();
							if(q.empty())
							{
								cout << "Error";
								break;
							}
							y++;
							continue;
						}
						cout << t << ' ';
						str[val] = 2;
						q.pop();
						td[k++] = t;
						if(q.empty()) break;
					}
				}
			}
			cout << endl;
		}
		else if(s == "arrive")
		{
			string name;
			cin >> name;
			int val = v(name);
			if(str[val] == 1 || str[val] == 2) cout << "Error";
			else if(str[val] == 0)
			{
				cout << "OK";
				str[val] = 1;
				q.push(name);
			}
			cout << endl;
		}
		else if(s == "leave")
		{
			string name;
			cin >> name;
			int val = v(name);
			if(str[val] == 2 || str[val] == 0) cout << "Error";
			else if(str[val] == 1)
			{
				cout << "OK";
				str[val] = 0;
			}
			cout << endl;
		}
	}
	return 0;
}
2023/8/12 20:20
加载中...