⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3233784_ac_172ms_1252k.cc

📁 北大大牛代码 1240道题的原代码 超级权威
💻 CC
字号:
#include <stdio.h>
#include <map>
#include <vector>
#include <algorithm>

using namespace std;

map <int,int> h1, h2;
struct node
{
	char type;
	int id;
	bool operator == (const node &x) const
	{
		return x.id==id&&x.type==type;
	}
};

vector <node> lock[10002];
int ignored[10012];

int conflict(int p,node t)
{
	int i;
	int ret1, ret2;

	if(lock[p].size()==0)
		return 0;
	ret1 = (t.type=='X');
	ret2 = 0;
	for(i = 0; i < lock[p].size(); i++)
	{
		if(lock[p][i].type=='X')
			ret1 = 1;
		if(lock[p][i].id!=t.id)
		{
			ret2 = 1;
		}
	}
	return ret1&&ret2;
}

void insert(int p,node t)
{
	int i;

	for(i = 0; i < lock[p].size(); i++)
	{
		if(lock[p][i]==t)
		{
			return ;
		}
	}
	lock[p].push_back(t);
}

int main()
{
	char type[2];
	node t;
	int no, id, trid, item;

	no = id = 1;
	h1.clear();h2.clear();
	fill_n(ignored,10001,0);
	while(scanf("%s",type)==1&&type[0]!='#')
	{
		scanf("%d%d",&trid,&item);
		if(h1[trid]==0)
		{
			trid = h1[trid] = id;
			id++;
		}
		else
			trid = h1[trid];
		if(h2[item]==0)
		{
			item = h2[item] = no;
			no++;
		}
		else
			item = h2[item];
		t.id = trid;t.type = type[0];
		if(ignored[trid]==1)
		{
			puts("IGNORED");
			continue;
		}
		if(conflict(item,t))
		{
			ignored[trid] = 1;
			puts("DENIED");
		}
		else
		{
			insert(item,t);
			puts("GRANTED");
		}
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -