Submission #800367

# Submission time Handle Problem Language Result Execution time Memory
800367 2023-08-01T13:47:42 Z erray Scales (IOI15_scales) C++17
46.1616 / 100
1 ms 212 KB
#include "scales.h"

#include<bits/stdc++.h>

using namespace std;

#ifdef DEBUG 
  #include "/home/ioi/codes/ioi15_d1/debug.h"
#else 
  #define debug(...) void(37)
#endif

template<typename T> 
vector<T> inverse_fuck(T* a, int N) {
  vector<T> res(N);
  for (int i = 0; i < N; ++i) {
    res[i] = a[i];
  }
  return res;
}


void init(int T) {
    /* ... */
}

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
//mt19937 rng(100);
void orderCoins() {
    vector<int> rord(6);
    iota(rord.begin(), rord.end(), 1);
    //rord = {4, 6, 2, 1, 3, 5};
    shuffle(rord.begin(), rord.end(), rng);
    array<array<int, 3>, 2> ord{};
    for (int i = 0; i < 2; ++i) {
      for (int j = 0; j < 3; ++j) {
        ord[i][j] = rord[i * 3 + j];
      }
      debug(ord);
      int mn = getLightest(ord[i][0], ord[i][1], ord[i][2]);
      int med = getMedian(ord[i][0], ord[i][1], ord[i][2]);
      for (int j = 1; j < 3; ++j) {
        if (ord[i][j] == mn) {
          swap(ord[i][0], ord[i][j]);
        }
      }
      if (ord[i][1] != med) {
        swap(ord[i][1], ord[i][2]);
      }
    }
    debug(ord);
    array<vector<int>, 4> ins;
    int mx = -1;
    for (auto x : ord[1]) {
      int g = getNextLightest(ord[0][0], ord[0][1], ord[0][2], x);
      int p = 0;
      while (p < 3 && g != ord[0][p]) {
        ++p;
      }
      debug(x, g, p, mx);
      if (mx > p) {
        p = 3;
      }
      mx = p;
      ins[p].push_back(x);
    }
    if (int(ins[0].size()) == 3) {
      //bruh case 
      debug("BRUH");
      int g = getNextLightest(ord[1][0], ord[1][1], ord[1][2], ord[0][0]);
        debug(g);
        //vector<int> aa;

      if (g == ord[1][0] && getLightest(ord[0][0], ord[0][1], ord[1][2]) == ord[1][2]) {
        //nothing
        //swap(ins[0], ins[3]);
      } else {
        while (!ins[0].empty()) {
          int add = ins[0].back();
          ins[3].insert(ins[3].begin(), add);
          ins[0].pop_back();
          if (add == g) {
            break;
          }
        }             
      } 
    } 
    vector<int> ans;
    for (int i = 0; i < 4; ++i) {
      for (auto x : ins[i]) {
        ans.push_back(x);
      }
      if (i < 3) {
        ans.push_back(ord[0][i]);
      }
    }
    int W[] = {1, 2, 3, 4, 5, 6};
    for (int i = 0; i < 6; ++i) {
      W[i] = ans[i];
    }
    debug(ans);
    answer(W);
}

Compilation message

scales.cpp: In function 'void init(int)':
scales.cpp:23:15: warning: unused parameter 'T' [-Wunused-parameter]
   23 | 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 1 ms 212 KB Output is partially correct
5 Partially correct 0 ms 212 KB Output is partially correct
6 Partially correct 0 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 0 ms 212 KB Output is partially correct
10 Partially correct 0 ms 212 KB Output is partially correct
11 Partially correct 0 ms 212 KB Output is partially correct
12 Partially correct 0 ms 212 KB Output is partially correct
13 Partially correct 1 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 0 ms 212 KB Output is partially correct
18 Partially correct 1 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 0 ms 212 KB Output is partially correct
26 Partially correct 0 ms 212 KB Output is partially correct
27 Partially correct 0 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 0 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 0 ms 212 KB Output is partially correct
40 Partially correct 0 ms 212 KB Output is partially correct