纪念第一次大模拟
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int n;
int x, y;
int life = 2, lifep = 2;
int power = 200;
bool check(int m) {
return m < 0 ? false : true;
}
int main() {
bool st[310] = {false};
st[100] = 1, st[200] = 1;
cin >> n;
bool flag = true;
while (n--) {
cin >> x;
switch (x) {
case 1: {
cin >> y;
while (y--) {
if (power >= 100) {
power -= 100;
}
else
{
int star = power;
life--;
power = 200;
for (int i = star + 1; i <= power; i++) {
if (i == 100 && !st[100]) {lifep += 1, st[100] = 1; continue;}
if (i == 200 && !st[200]) {lifep += 1, st[200] = 1; continue;}
if (i == 300 && !st[300]) {lifep += 1, st[300] = 1; continue;}
}
life += lifep/9;
lifep %= 9;
if (life > 8) {
life = 8;
}
}
}
if (!check(life)) flag = false;
} break;
case 2: {
cin >> y;
lifep += y;
life += lifep/9;
lifep %= 9;
if (life >= 8) {
life = 8;
}
} break;
case 3: {
cin >> y;
int star = power;
power += y;
if (power > 300) {
power = 300;
}
for (int i = star + 1; i <= power; i++) {
if (i == 100 && !st[100]) {lifep += 1, st[100] = 1; continue;}
if (i == 200 && !st[200]) {lifep += 1, st[200] = 1; continue;}
if (i == 300 && !st[300]) {lifep += 1, st[300] = 1; continue;}
}
life += lifep/9;
lifep %= 9;
if (life > 8) {
life = 8;
} }break;
case 4: {
memset(st, 0, sizeof(st));
cin >> y;
power = 0;
int star = power;
power += y;
if (power > 300) {
power = 300;
}
for (int i = star + 1; i <= power; i++) {
if (i == 100 && !st[100]) {lifep += 1, st[100] = 1; continue;}
if (i == 200 && !st[200]) {lifep += 1, st[200] = 1; continue;}
if (i == 300 && !st[300]) {lifep += 1, st[300] = 1; continue;}
}
life += lifep/9;
lifep %= 9;
if (life > 8) {
life = 8;
}
} break;
}
}
if (flag) cout << life << " " << lifep << " " << power << endl;
else cout << "GG" << endl;
return 0;
}