# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
45736 | 2018-04-16T05:14:02 Z | jun6873 | 저울 (IOI15_scales) | C++11 | 109 ms | 1532 KB |
#include "scales.h" #include <bits/stdc++.h> using namespace std; int p[720][7] = {{0, 1, 2, 3, 4, 5, 6}}; struct query { query() {} query(int t, int a, int b, int c, int d) : t(t), a(a), b(b), c(c), d(d) {} int t, a, b, c, d; int moi(int k) { if (t==1) { // Heaviest if (p[k][a] > p[k][b] and p[k][a] > p[k][c]) return 0; else return (p[k][b] > p[k][c]) ? 1 : 2; } if (t==2) { // Lightest if (p[k][a] < p[k][b] and p[k][a] < p[k][c]) return 0; else return (p[k][b] < p[k][c]) ? 1 : 2; } if (t==3) { // Median if (p[k][a] < p[k][b]) { if (p[k][b] < p[k][c]) return 1; else return p[k][a] < p[k][c] ? 2 : 0; } else { if (p[k][a] < p[k][c]) return 0; else return p[k][b] < p[k][c] ? 2 : 1; } } if (t==4) { // NextHeaviest int x = p[k][a], y = p[k][b], z = p[k][c]; if (not (x < p[k][d] and y < p[k][d] and z < p[k][d])) { if (x < p[k][d]) x = 7; if (y < p[k][d]) y = 7; if (z < p[k][d]) z = 7; } if (x<y and x<z) return 0; else return y<z ? 1 : 2; } return -1; } int real() { int res; if (t==1) res = getHeaviest(a, b, c); if (t==2) res = getLightest(a, b, c); if (t==3) res = getMedian(a, b, c); if (t==4) res = getNextLightest(a, b, c, d); if (res == a) return 0; if (res == b) return 1; if (res == c) return 2; } }; vector<query> q; struct node { query q; node *ch[3]; set<int> s; } *root; bool make_tree(node* k, set<int> s) { k->s = s; for (int i=0; i<3; i++) if (!k->ch[i]) k->ch[i] = new node(); if (s.size() <= 1) return true; for (int i=0; i<q.size(); i++) { set<int> r[3]; for (int e : s) r[q[i].moi(e)].insert(e); if (max({r[0].size(), r[1].size(), r[2].size()}) - min({r[0].size(), r[1].size(), r[2].size()}) < 2) if (make_tree(k->ch[0], r[0]) and make_tree(k->ch[1], r[1]) and make_tree(k->ch[2], r[2])) { k->q = q[i]; return true; } } return false; } void init(int T) { for (int x=1; x<=6; x++) for (int y=x+1; y<=6; y++) for (int z=y+1; z<=6; z++) { q.emplace_back(1, x, y, z, -1); q.emplace_back(2, x, y, z, -1); q.emplace_back(3, x, y, z, -1); for (int w=1; w<=6; w++) if (x!=w and y!=w and z!=w) q.emplace_back(4, x, y, z, w); } for (int i=1; i<720; i++) { copy(p[i-1]+1, p[i-1]+7, p[i]+1); next_permutation(p[i]+1, p[i]+7); } set<int> st; for (int i=0; i<720; i++) st.insert(i); root = new node(); make_tree(root, st); } void orderCoins() { while (root->s.size() > 1) { root = root->ch[root->q.real()]; } int ans[6], *rans = p[*root->s.begin()]; for (int i=1; i<=6; i++) ans[rans[i]-1] = i; answer(ans); }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 109 ms | 1144 KB | Output isn't correct |
2 | Incorrect | 71 ms | 1236 KB | Output isn't correct |
3 | Incorrect | 78 ms | 1236 KB | Output isn't correct |
4 | Incorrect | 88 ms | 1364 KB | Output isn't correct |
5 | Incorrect | 72 ms | 1376 KB | Output isn't correct |
6 | Incorrect | 77 ms | 1448 KB | Output isn't correct |
7 | Incorrect | 106 ms | 1448 KB | Output isn't correct |
8 | Incorrect | 72 ms | 1448 KB | Output isn't correct |
9 | Incorrect | 75 ms | 1448 KB | Output isn't correct |
10 | Incorrect | 73 ms | 1520 KB | Output isn't correct |
11 | Incorrect | 73 ms | 1520 KB | Output isn't correct |
12 | Incorrect | 74 ms | 1532 KB | Output isn't correct |
13 | Incorrect | 73 ms | 1532 KB | Output isn't correct |
14 | Incorrect | 106 ms | 1532 KB | Output isn't correct |
15 | Incorrect | 76 ms | 1532 KB | Output isn't correct |
16 | Incorrect | 74 ms | 1532 KB | Output isn't correct |
17 | Incorrect | 74 ms | 1532 KB | Output isn't correct |
18 | Incorrect | 71 ms | 1532 KB | Output isn't correct |
19 | Incorrect | 71 ms | 1532 KB | Output isn't correct |
20 | Incorrect | 74 ms | 1532 KB | Output isn't correct |
21 | Incorrect | 76 ms | 1532 KB | Output isn't correct |
22 | Incorrect | 105 ms | 1532 KB | Output isn't correct |
23 | Incorrect | 73 ms | 1532 KB | Output isn't correct |
24 | Incorrect | 76 ms | 1532 KB | Output isn't correct |
25 | Incorrect | 70 ms | 1532 KB | Output isn't correct |
26 | Incorrect | 77 ms | 1532 KB | Output isn't correct |
27 | Incorrect | 75 ms | 1532 KB | Output isn't correct |
28 | Incorrect | 72 ms | 1532 KB | Output isn't correct |
29 | Incorrect | 72 ms | 1532 KB | Output isn't correct |
30 | Incorrect | 95 ms | 1532 KB | Output isn't correct |
31 | Incorrect | 99 ms | 1532 KB | Output isn't correct |
32 | Incorrect | 73 ms | 1532 KB | Output isn't correct |
33 | Incorrect | 89 ms | 1532 KB | Output isn't correct |
34 | Incorrect | 71 ms | 1532 KB | Output isn't correct |
35 | Incorrect | 82 ms | 1532 KB | Output isn't correct |
36 | Incorrect | 71 ms | 1532 KB | Output isn't correct |
37 | Incorrect | 71 ms | 1532 KB | Output isn't correct |
38 | Incorrect | 79 ms | 1532 KB | Output isn't correct |
39 | Incorrect | 78 ms | 1532 KB | Output isn't correct |
40 | Incorrect | 74 ms | 1532 KB | Output isn't correct |