제출 #482726

#제출 시각아이디문제언어결과실행 시간메모리
482726dxz05저울 (IOI15_scales)C++14
0 / 100
1 ms256 KiB
#include "scales.h" #include <bits/stdc++.h> using namespace std; void init(int T) { /* ... */ } map<vector<int>, int> mem[4]; int Lightest(int A, int B, int C){ if (mem[0].find({A, B, C}) != mem[0].end()) return mem[0][{A, B, C}]; return mem[0][{A, B, C}] = getLightest(A, B, C); } int Median(int A, int B, int C){ if (mem[1].find({A, B, C}) != mem[1].end()) return mem[1][{A, B, C}]; return mem[1][{A, B, C}] = getMedian(A, B, C); } int Heaviest(int A, int B, int C){ if (mem[2].find({A, B, C}) != mem[2].end()) return mem[2][{A, B, C}]; return mem[2][{A, B, C}] = getHeaviest(A, B, C); } int NextLightest(int A, int B, int C, int D){ if (mem[3].find({A, B, C, D}) != mem[3].end()) return mem[3][{A, B, C, D}]; return mem[3][{A, B, C, D}] = getNextLightest(A, B, C, D); } void orderCoins() { /* ... */ int W[] = {1, 2, 3, 4, 5, 6}; for (int i = 0; i < 3; i++){ for (int j = i; j < 6; j++){ vector<int> v; for (int k = i; k < 6; k++){ if (k != j) v.push_back(k); } bool ok = true; if (v.size() & 1){ v.push_back(v[v.size() - 2]); } for (int k = 0; k + 1 < v.size(); k += 2){ ok &= Lightest(W[j], W[v[k]], W[v[k + 1]]) == W[j]; } if (ok){ swap(W[i], W[j]); break; } } } int A = Lightest(W[3], W[4], W[5]); int B = Median(W[3], W[4], W[5]); W[5] = W[3] + W[4] + W[5] - A - B; W[3] = A, W[4] = B; answer(W); }

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

scales.cpp: In function 'void init(int)':
scales.cpp:6:15: warning: unused parameter 'T' [-Wunused-parameter]
    6 | void init(int T) {
      |           ~~~~^
scales.cpp: In function 'void orderCoins()':
scales.cpp:49:35: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   49 |             for (int k = 0; k + 1 < v.size(); k += 2){
      |                             ~~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...