Submission #1246566

#TimeUsernameProblemLanguageResultExecution timeMemory
1246566countlessScales (IOI15_scales)C++20
0 / 100
0 ms320 KiB
#include "scales.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; #define sp <<" "<< #define endl "\n" void init(int T) { // sus there might be some bruteforce precomp } void orderCoins() { vector<int> L = {1, 2, 3}, R = {4, 5, 6}; auto sort3 = [&](vector<int> &X) -> void { cerr << "query1" sp X[0] sp X[1] sp X[2] << endl; int A = getLightest(X[0], X[1], X[2]); int B = getMedian(X[0], X[1], X[2]); int C; for (int i = 0; i < 3; i++) { if (X[i] == A or X[i] == B) continue; C = X[i]; } X = {A, B, C}; }; sort3(L), sort3(R); vector<int> A; int N, X; N = L[1]; X = getMedian(L[0], N, R[0]); if (X == L[0]) { A.push_back(R[0]); A.push_back(L[0]); N = L[1]; } else if (X == N) { A.push_back(L[0]); A.push_back(L[1]); N = R[0]; } else { A.push_back(L[0]); A.push_back(R[0]); N = L[1]; } if (N == R[0]) { X = getNextLightest(R[0], R[1], R[2], L[2]); if (X == R[0]) { X = getHeaviest(R[1], R[2], L[2]); if (X == L[2]) { A.push_back(R[0]); A.push_back(R[1]); A.push_back(R[2]); A.push_back(L[2]); } else { A.push_back(L[2]); A.push_back(R[0]); A.push_back(R[1]); A.push_back(R[2]); } } else { A.push_back(R[0]); A.push_back(R[1]); A.push_back(R[2]); auto it = find(A.begin(), A.end(), X); A.insert(it, L[2]); } } else if (N == L[1]) { X = getMedian(R[1], N, R[2]); if (X == R[1]) { A.push_back(N); A.push_back(R[1]); N = R[2]; } else if (X == N) { A.push_back(R[1]); A.push_back(N); N = R[2]; } else { A.push_back(R[1]); A.push_back(R[2]); N = L[1]; } if (N == L[1]) { A.push_back(L[1]); A.push_back(L[2]); } else { X = getNextLightest(L[1], R[1], R[2], L[2]); if (X == L[1]) { A.push_back(N); A.push_back(L[2]); } else { A.push_back(N); auto it = find(A.begin(), A.end(), X); A.insert(it, L[2]); } } } else assert(0); int W[6]; for (int i = 0; i < 6; i++) W[i] = A[i]; answer(W); }
#Verdict Execution timeMemoryGrader output
Fetching results...