Submission #604322

# Submission time Handle Problem Language Result Execution time Memory
604322 2022-07-25T04:05:59 Z cheissmart Scales (IOI15_scales) C++14
55.5556 / 100
1 ms 212 KB
#include "scales.h"
#include <bits/stdc++.h>
#define F first
#define S second
#define V vector
#define PB push_back
#define EB emplace_back
#define MP make_pair
#define SZ(v) int((v).size())
#define ALL(v) (v).begin(), (v).end()

using namespace std;

typedef long long ll;
typedef pair<int, int> pi;
typedef V<int> vi;

const int INF = 1e9 + 7;

void init(int T) {

}

void orderCoins() {
    vi ans(6); iota(ALL(ans), 1);

    auto go = [&] (int x, int y, int z) {
        int a = ans[x], b = ans[y], c = ans[z];
        int mx = getHeaviest(a, b, c);
        int mn = getLightest(a, b, c);
        int md = a ^ b ^ c ^ mx ^ mn;
        ans[x] = mn, ans[y] = md, ans[z] = mx;
    };
    // auto ins = [&] (int l, int r, int x) {
    //     int ql = -1, qr = -1;
    //     if((ql = getMedian(ans[l], ans[l + 1], ans[x])) == ans[l]) {
    //         int val = ans[x];
    //         ans.erase(ans.begin() + x);
    //         ans.insert(ans.begin() + l, val);
    //         return;
    //     }
    //     if((qr = getMedian(ans[r - 1], ans[r], ans[x])) == ans[r]) {
    //         int val = ans[x];
    //         ans.erase(ans.begin() + x);
    //         ans.insert(ans.begin() + r + 1, val);
    //         return;
    //     }
    //     for(int i = l; i + 1 <= r; i++) {
    //         int qi = -1;
    //         if(i == l) qi = ql;
    //         else if(i + 1 == r) qi = qr;
    //         else qi = getMedian(ans[i], ans[i + 1], ans[x]);
    //         if(qi == ans[x]) {
    //             int val = ans[x];
    //             ans.erase(ans.begin() + x);
    //             ans.insert(ans.begin() + i + 1, val);
    //             return;
    //         }
    //     }
    //     throw;
    // };
    auto ins = [&] (int l, int r, int x) {
        int qq = getNextLightest(ans[l], ans[l + 1], ans[l + 2], ans[x]);
        int val = ans[x]; ans.erase(ans.begin() + x);
        if(qq == ans[l])
            ans.insert(ans.begin() + r + 1, val);
        else if(qq == ans[l + 2])
            ans.insert(ans.begin() + l + 2, val);
        else
            ans.insert(ans.begin() + l + 1, val);
    };
    go(0, 1, 2);
    go(3, 4, 5);
    if(getLightest(ans[0], ans[3], ans[1]) == ans[3]) {
        swap(ans[0], ans[3]);
        swap(ans[1], ans[4]);
        swap(ans[2], ans[5]);
    }
    ins(0, 2, 3);
    ins(1, 3, 4);
    ins(2, 4, 5);

    int W[] = {ans[0], ans[1], ans[2], ans[3], ans[4], ans[5]};
    answer(W);
}

Compilation message

scales.cpp: In function 'void init(int)':
scales.cpp:20:15: warning: unused parameter 'T' [-Wunused-parameter]
   20 | void init(int T) {
      |           ~~~~^
# Verdict Execution time Memory Grader output
1 Partially correct 0 ms 212 KB Output is partially correct
2 Partially correct 0 ms 212 KB Output is partially correct
3 Partially correct 0 ms 212 KB Output is partially correct
4 Partially correct 0 ms 212 KB Output is partially correct
5 Partially correct 0 ms 212 KB Output is partially correct
6 Partially correct 1 ms 212 KB Output is partially correct
7 Partially correct 0 ms 212 KB Output is partially correct
8 Partially correct 0 ms 212 KB Output is partially correct
9 Partially correct 1 ms 212 KB Output is partially correct
10 Partially correct 0 ms 212 KB Output is partially correct
11 Partially correct 1 ms 212 KB Output is partially correct
12 Partially correct 0 ms 212 KB Output is partially correct
13 Partially correct 0 ms 212 KB Output is partially correct
14 Partially correct 0 ms 212 KB Output is partially correct
15 Partially correct 0 ms 212 KB Output is partially correct
16 Partially correct 0 ms 212 KB Output is partially correct
17 Partially correct 1 ms 212 KB Output is partially correct
18 Partially correct 0 ms 212 KB Output is partially correct
19 Partially correct 0 ms 212 KB Output is partially correct
20 Partially correct 0 ms 212 KB Output is partially correct
21 Partially correct 0 ms 212 KB Output is partially correct
22 Partially correct 0 ms 212 KB Output is partially correct
23 Partially correct 0 ms 212 KB Output is partially correct
24 Partially correct 0 ms 212 KB Output is partially correct
25 Partially correct 1 ms 212 KB Output is partially correct
26 Partially correct 0 ms 212 KB Output is partially correct
27 Partially correct 1 ms 212 KB Output is partially correct
28 Partially correct 0 ms 212 KB Output is partially correct
29 Partially correct 0 ms 212 KB Output is partially correct
30 Partially correct 0 ms 212 KB Output is partially correct
31 Partially correct 0 ms 212 KB Output is partially correct
32 Partially correct 0 ms 212 KB Output is partially correct
33 Partially correct 0 ms 212 KB Output is partially correct
34 Partially correct 1 ms 212 KB Output is partially correct
35 Partially correct 0 ms 212 KB Output is partially correct
36 Partially correct 0 ms 212 KB Output is partially correct
37 Partially correct 0 ms 212 KB Output is partially correct
38 Partially correct 0 ms 212 KB Output is partially correct
39 Partially correct 1 ms 212 KB Output is partially correct
40 Partially correct 0 ms 212 KB Output is partially correct