제출 #41792

#제출 시각아이디문제언어결과실행 시간메모리
41792funcsrScales (IOI15_scales)C++14
55.56 / 100
3 ms584 KiB
#include "scales.h" #include <iostream> #include <vector> #include <algorithm> #include <string> #include <queue> #include <cassert> using namespace std; #define rep(i, n) for (int i=0; i<(n); i++) #define all(x) x.begin(), x.end() #define uniq(x) x.erase(unique(all(x)), x.end()) #define index(x, y) (int)(lower_bound(all(x), y) - x.begin()) #define pb push_back #define _1 first #define _2 second typedef pair<int, int> P; void init(int T) {} void solve3(vector<int> rest, vector<int> &ret) { //cout<<"solve3("<<rest[0]<<","<<rest[1]<<","<<rest[2]<<")\n"; assert(rest.size() == 3); int a = getHeaviest(rest[0], rest[1], rest[2]); int b = getMedian(rest[0], rest[1], rest[2]); ret.pb(a); ret.pb(b); for (int x : rest) if (x != a && x != b) ret.pb(x); } void solve4(vector<int> rest, vector<int> &ret) { assert(rest.size() == 4); // +2 int a = getHeaviest(rest[0], rest[1], rest[2]); int tekitou = -1; for (int x : rest) if (x != rest[3] && x != a) tekitou = x; int mx = -1; if (a == getHeaviest(a, rest[3], tekitou)) mx = a; else mx = rest[3]; ret.pb(mx); vector<int> new_rest; for (int x : rest) if (x != mx) new_rest.pb(x); solve3(new_rest, ret); } void orderCoins() { int max_123 = getHeaviest(1, 2, 3); int max_456 = getHeaviest(4, 5, 6); int tekitou = 1; while (tekitou==max_123 || tekitou==max_456) tekitou++; vector<int> ret; if (getHeaviest(max_123, max_456, tekitou) == max_123) { vector<int> x; for (int i=1; i<=3; i++) if (i != max_123) x.pb(i); ret.pb(max_123); int sec = getHeaviest(x[0], x[1], max_456); ret.pb(sec); vector<int> rest; for (int i=1; i<=6; i++) if (i != max_123 && i != sec) rest.pb(i); solve4(rest, ret); } else { vector<int> x; for (int i=4; i<=6; i++) if (i != max_456) x.pb(i); ret.pb(max_456); int sec = getHeaviest(x[0], x[1], max_123); ret.pb(sec); vector<int> rest; for (int i=1; i<=6; i++) if (i != max_456 && i != sec) rest.pb(i); solve4(rest, ret); } assert(ret.size() == 6); reverse(all(ret)); int W[] = {ret[0], ret[1], ret[2], ret[3], ret[4], ret[5]}; //cout<<"["; rep(i, 6)cout<<W[i]<<",";cout<<"]\n"; answer(W); }

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

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