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

📄 2161.cpp

📁 这是哈尔滨工业大学acmOJ的源代码
💻 CPP
字号:
/*  This Code is Submitted by wywcgs for Problem 2161 on 2006-03-08 at 17:00:12 */ 
#include <cstdio>
#include <algorithm>
using namespace std;

const int MAX = 320;

class Machine {
public:
	int n, mark, sep[MAX];
	bool store[MAX];
	void clear();
	void insert(int);
	void free(int);
};
void Machine::clear() {
	mark = 0;
	memset(store, false, sizeof(store));
	memset(sep, 0, sizeof(sep));
}
void Machine::insert(int m) {
	int vst[MAX]; memset(vst, 0, sizeof(vst));
	int now = mark, hn = 0;
	for(now = mark; vst[now] != 2; now = (now+1)%n) {
		if(store[now]) hn = 0;
		else hn++;
		if(hn == m+2) break;
		vst[now]++;
	}
	if(hn != m+2) printf("No space left, please come back later.\n");
	else {
		int begin = (now-m-1+n)%n;
		printf("The launderer gives ticket %d.\n", begin);
		for(mark = (begin+1)%n; mark != now; mark = (mark+1)%n)
			store[mark] = true;
		sep[mark]++; sep[begin]++;
	}
}
void Machine::free(int m) {
	printf("The launderer gives back batch %d.\n", m);
	int end = 0; mark = m;
	for( ; end != 2; m = (m+1)%n) {
		store[m] = false;
		if(sep[m] != 0) { sep[m]--; end++; }
		if(sep[m] == 0) printf("%d is freed.\n", m);
	}
}

int main()
{
	int i, n;
	Machine machine;

	while(scanf("%d", &machine.n) != EOF) {
		machine.clear();
		scanf("%d", &n);
		for(i = 0; i < n; i++) {
			char in; int a;
			scanf("\n%c %d", &in, &a);
			if(in == 'D') machine.insert(a);
			else machine.free(a);
		}
	}

	return 0;
}

⌨️ 快捷键说明

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