제출 #286469

#제출 시각아이디문제언어결과실행 시간메모리
286469dolphingarlic저울 (IOI15_scales)C++14
0 / 100
1 ms256 KiB
#include "scales.h" #include <bits/stdc++.h> using namespace std; void ins_at(deque<int> &K, int v, int p) { K.insert(find(K.begin(), K.end(), p), v); } void init(int T) {} void orderCoins() { deque<int> K; int A = getNextLightest(1, 2, 3, 4); int B = A % 3 + 1; int C = getLightest(A, B, 4); if (C == A) { // A is the lightest; 4 is the heavyiest int med = getMedian(A, B, 6 - A - B); K = {A, med, 6 - A - med, 4}; } else if (C == 4) { // (4 < A) < B int med = getMedian(4, B, 6 - A - B); if (med == 4) K = {6 - A - B, 4, A, B}; else if (med == B) K = {4, A, B, 6 - A - B}; else K = {4, A, 6 - A - B, B}; } else { // B < (4 < A) int med = getMedian(4, B, 6 - A - B); if (med == 4) K = {B, 4, A, 6 - A - B}; else if (med == B) K = {6 - A - B, B, 4, A}; else K = {B, 6 - A - B, 4, A}; } int X = 5, Y = 6; int heavy = getHeaviest(K[3], X, Y); if (heavy == K[3]) { int light = getLightest(K[3], X, Y); if (light == Y) swap(X, Y); int med = getMedian(K[0], K[1], Y); if (med == K[0]) { K.push_front(Y); K.push_front(X); } else if (med == K[1]) { // K[0] < K[1] < Y int med2 = getMedian(K[2], X, Y); if (med2 == K[2]) { ins_at(K, Y, K[3]); int med3 = getMedian(K[0], K[1], X); if (med3 == K[0]) K.push_front(X); else if (med3 == K[1]) ins_at(K, X, K[2]); else ins_at(K, X, K[1]); } else if (med2 == X) { ins_at(K, X, K[3]); ins_at(K, Y, K[4]); } else { ins_at(K, Y, K[2]); int med3 = getMedian(K[0], K[1], X); if (med3 == K[0]) K.push_front(X); else if (med3 == K[1]) ins_at(K, X, K[2]); else ins_at(K, X, K[1]); } } else { ins_at(K, Y, K[1]); if (getLightest(K[0], X, Y) == K[0]) ins_at(K, X, Y); else K.push_front(X); } } else { if (heavy == X) swap(X, Y); int g = getNextLightest(K[0], K[1], K[2], X); if (g == K[0]) { int med = getMedian(K[0], K[3], X); if (med == X) ins_at(K, X, K[3]); else if (med == K[0]) K.push_front(X); else K.push_back(X); } else ins_at(K, X, g); K.push_back(Y); } for (int i : K) cout << i << ' '; cout << '\n'; int W[6] = {K[0], K[1], K[2], K[3], K[4], K[5]}; answer(W); }

컴파일 시 표준 에러 (stderr) 메시지

scales.cpp: In function 'void init(int)':
scales.cpp:8:15: warning: unused parameter 'T' [-Wunused-parameter]
    8 | void init(int T) {}
      |           ~~~~^
#Verdict Execution timeMemoryGrader output
Fetching results...