Submission #1323980

#TimeUsernameProblemLanguageResultExecution timeMemory
1323980kasamchiMini tetris (IOI16_tetris)C++20
100 / 100
1 ms332 KiB
#include "tetris.h"
#include <bits/stdc++.h>
using namespace std;

map<pair<vector<int>, int>, tuple<int, int, vector<int>>> transfer;
vector<int> height;
int fig, pos, rot;

void init(int n) {
	height = {0, 0, 0};
	transfer[{{0, 0, 0}, 2}] = {0, 0, {1, 1, 0}};
	transfer[{{0, 0, 0}, 3}] = {0, 0, {2, 1, 0}};
	transfer[{{1, 1, 0}, 2}] = {2, 1, {0, 0, 1}};
	transfer[{{1, 1, 0}, 3}] = {1, 2, {0, 1, 1}};
	transfer[{{2, 1, 0}, 2}] = {1, 0, {1, 1, 0}};
	transfer[{{2, 1, 0}, 3}] = {1, 2, {0, 0, 0}};
	transfer[{{0, 0, 1}, 2}] = {0, 0, {0, 0, 0}};
	transfer[{{0, 0, 1}, 3}] = {0, 0, {1, 0, 0}};
	transfer[{{0, 1, 1}, 2}] = {0, 1, {1, 0, 0}};
	transfer[{{0, 1, 1}, 3}] = {0, 3, {1, 1, 0}};
	transfer[{{1, 0, 0}, 2}] = {1, 0, {0, 0, 0}};
	transfer[{{1, 0, 0}, 3}] = {1, 1, {0, 0, 1}};
}

void new_figure(int figure_type) {
	fig = figure_type;
	if (fig != 1) {
		auto res = transfer[make_pair(height, fig)];
		pos = get<0>(res);
		rot = get<1>(res);
		height = get<2>(res);
	}
}

int get_position() {
	if (fig == 1) {
		return 0;
	} else {
		return pos;
	}
}

int get_rotation() {
	if (fig == 1) {
		return 0;
	} else {
		return rot;
	}
}

Compilation message (stderr)

tetris.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
tetris_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...