Submission #1258792

#TimeUsernameProblemLanguageResultExecution timeMemory
1258792nicolo_010Robot Contest (IOI23_robot)C++20
9 / 100
68 ms5784 KiB
#include <bits/stdc++.h>
#include "robot.h"
using namespace std;
template <typename T>
using v = vector<T>;
using ll = long long;
using pii = pair<int, int>;
#define rep(i, k, n) for (int i = k; i < n; i++)
#define set_instructions set_instruction

map<v<int>, int> mp;
 
bool not_used(v<int> S) {
	bool can = !mp.count(S);
	mp[S] = 1;
	return can;
}

void program_pulibot() {
	v<int> S = {0, 0, -2, -2, 0};
	rep(i, -1, 4) {
		S[1] = i;
		S[4] = 2;
		if (not_used(S)) set_instructions(S, 1, 'N');
		S[1] = 2;
		S[4] = i;
		if (not_used(S)) set_instructions(S, 1, 'W');
		mp[S] = 1;
	}
	S = {2, -2, 0, 0, -2};
	rep(i, -1, 4) {
		S[2] = i;
		S[3] = 1;
		if (not_used(S)) set_instructions(S, 1, 'T');
		S[2] = 1;
		S[3] = i;
		if (not_used(S)) set_instructions(S, 1, 'T');
	}
	set<int> s;
	rep(i, 1, 5) {
		s.insert(i);
	}
	v<char> c = {'X', 'W', 'S', 'E', 'N'};
	rep(i, 1, 5) {
		s.erase(i);
		S = {0, 0, 0, 0, 0};
		rep(j, -2, 4) {
			rep(k, -2, 4) {
				rep(z, -2, 4) {
					S[0] = 0;
					S[i] = 0;
					auto it = s.begin();
					S[*it] = j;
					it++;
					S[*it] = k;
					it++;
					S[*it] = z;
					if (not_used(S)) set_instructions(S, 2, c[i]);
					S[0] = 2;
					if (not_used(S)) set_instructions(S, 2, c[i]);
				}
			}
		}
		s.insert(i);
	}
	rep(i, 1, 5) {
		s.erase(i);
		S = {0, 0, 0, 0, 0};
		rep(j, -2, 4) {
			rep(k, -2, 4) {
				rep(z, -2, 4) {
					S[0] = 0;
					S[i] = 2;
					auto it = s.begin();
					S[*it] = j;
					it++;
					S[*it] = k;
					it++;
					S[*it] = z;
					if (not_used(S)) set_instructions(S, 3, c[i]);
					S[0] = 2;
					bool uno = false;
					for (auto x : S) if (x == 1) uno = true;
					int col = (uno ? 1 : 3);
					if (not_used(S)) set_instructions(S, col, c[i]);
				}
			}
		}
		s.insert(i);
	}

}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...