📄 2161.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 + -