제출 #1131501

#제출 시각아이디문제언어결과실행 시간메모리
1131501Ariadna저울 (IOI15_scales)C++20
0 / 100
0 ms320 KiB
#include <bits/stdc++.h> #include "scales.h" using namespace std; void orderCoins() { vector<vector<vector<int>>> memo(7, vector<vector<int>>(7, vector<int>(7, -1))); int W[6]; int l1 = getLightest(1, 2, 3); int l2 = getLightest(4, 5, 6); memo[1][2][3] = l1; memo[4][5][6] = l2; int a = 1; if (l1 == 1) a = 2; W[0] = getLightest(l1, l2, a); set<int> aux; for (int i = 1; i <= 6; ++i) { if (i != W[0]) aux.insert(i); } for (int i = 1; i < 4; ++i) { vector<int> v; for (int j: aux) v.push_back(j); if (memo[v[0]][v[1]][v[2]] == -1) memo[v[0]][v[1]][v[2]] = getLightest(v[0], v[1], v[2]); W[i] = memo[v[0]][v[1]][v[2]]; if ((int)aux.size() == 5) { if (memo[W[i]][v[3]][v[4]] == -1) memo[W[i]][v[3]][v[4]] = getLightest(W[i], v[3], v[4]); W[i] = memo[W[i]][v[3]][v[4]]; } else if ((int)aux.size() == 4) { int a = v[0]; if (v[0] == W[i]) a = v[1]; if (memo[W[i]][v[3]][a] == -1) memo[W[i]][v[3]][a] = getLightest(W[i], v[3], a); W[i] = memo[W[i]][v[3]][a]; } aux.erase(W[i]); } vector<int> v; for (int i: aux) v.push_back(i); W[4] = getMedian(W[0], v[0], v[1]); W[5] = v[0]+v[1]-W[4]; answer(W); } void init(int T) { for (int i = 0; i < T; ++i) orderCoins(); }
#Verdict Execution timeMemoryGrader output
Fetching results...