Submission #784982

# Submission time Handle Problem Language Result Execution time Memory
784982 2023-07-16T20:48:42 Z Sam_a17 The Big Prize (IOI17_prize) C++17
20 / 100
87 ms 2696 KB
#include <bits/stdc++.h>
using namespace std;

#define pb push_back
#define ld long double
#define ll long long

#define sz(x) (int((x).size()))
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define uniq(x) x.resize(unique(all(x)) - x.begin());
#define lb lower_bound
#define ub upper_bound

// for random generations
// mt19937 myrand(chrono::steady_clock::now().time_since_epoch().count());
mt19937 myrand(131);

std::vector<int> ask(int i);
const int N = 2e5 + 10;
pair<int, int> a[N];
int used[N];

int find_best(int n) {
  memset(used, -1, sizeof(used));

  int mxi = 0;
  int mxQ = 450;

  
  if(n >= 80000) {
    mxQ = 300;
  }

  for(int i = 0; i < mxQ; i++) {
    int cur = myrand() % n;
    while (used[cur] == 1) {
      cur = myrand() % n;
    }
    
    auto u = ask(cur);

    a[cur].first = u[0];
    a[cur].second = u[1];
    
    if((u[0] + u[1]) == 0) {
      return cur;
    }

    mxi = max(mxi, u[0] + u[1]);
    used[cur] = 1;
  }


  for(int i = 0; i < n; i++) {
    int ina = i, inb = n - 1, answ = i;
    int lx, rx;
    if(used[i] != -1) {
      lx = a[i].first;
      rx = a[i].second;
    } else {
      auto u = ask(i);

      a[i].first = u[0];
      a[i].second = u[1];

      lx = u[0], rx = u[1];
      used[i] = 1;
    }

    if((lx + rx) == 0) {
      return i;
    }

    if((lx + rx) != mxi) {
      continue;
    }

    while(ina <= inb) {
      int mid = (ina + inb) / 2;
      int l = 0, r = 0;
      if(used[mid] != -1) {
        l = a[mid].first;
        r = a[mid].second;
      } else {
        auto u = ask(mid);

        a[mid].first = u[0];
        a[mid].second = u[1];

        l = u[0], r = u[1];
        used[i] = 1;
      }

      if((l + r) == 0) {
        return mid;
      }

      if(l == lx && (l + r) == (lx + rx)) {
        answ = mid;
        ina = mid + 1;
      } else {
        inb = mid - 1;
      }
    }

    i = answ;
  }

  // xd
  return -1;
}
# Verdict Execution time Memory Grader output
1 Correct 3 ms 1872 KB Output is correct
2 Correct 4 ms 1840 KB Output is correct
3 Correct 3 ms 1864 KB Output is correct
4 Correct 3 ms 1832 KB Output is correct
5 Correct 3 ms 1744 KB Output is correct
6 Correct 4 ms 1840 KB Output is correct
7 Correct 2 ms 1708 KB Output is correct
8 Correct 3 ms 1764 KB Output is correct
9 Correct 4 ms 1872 KB Output is correct
10 Correct 4 ms 1872 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 1832 KB Output is correct
2 Correct 2 ms 1816 KB Output is correct
3 Correct 4 ms 1836 KB Output is correct
4 Correct 2 ms 1812 KB Output is correct
5 Correct 2 ms 1732 KB Output is correct
6 Correct 2 ms 1812 KB Output is correct
7 Correct 3 ms 1708 KB Output is correct
8 Correct 3 ms 1716 KB Output is correct
9 Correct 3 ms 1892 KB Output is correct
10 Correct 4 ms 1872 KB Output is correct
11 Correct 6 ms 1992 KB Output is correct
12 Correct 2 ms 1792 KB Output is correct
13 Correct 9 ms 2096 KB Output is correct
14 Correct 7 ms 1256 KB Output is correct
15 Correct 7 ms 2184 KB Output is correct
16 Partially correct 41 ms 2552 KB Partially correct - number of queries: 7622
17 Correct 2 ms 1800 KB Output is correct
18 Partially correct 68 ms 2596 KB Partially correct - number of queries: 8901
19 Correct 2 ms 1808 KB Output is correct
20 Correct 17 ms 1720 KB Output is correct
21 Correct 16 ms 2388 KB Output is correct
22 Correct 4 ms 2020 KB Output is correct
23 Correct 4 ms 1872 KB Output is correct
24 Correct 4 ms 1840 KB Output is correct
25 Partially correct 38 ms 2356 KB Partially correct - number of queries: 5155
26 Partially correct 30 ms 2440 KB Partially correct - number of queries: 5080
27 Correct 4 ms 1840 KB Output is correct
28 Partially correct 38 ms 2564 KB Partially correct - number of queries: 8466
29 Partially correct 60 ms 2476 KB Partially correct - number of queries: 6485
30 Partially correct 56 ms 2620 KB Partially correct - number of queries: 8816
31 Correct 4 ms 1872 KB Output is correct
32 Correct 7 ms 2116 KB Output is correct
33 Correct 1 ms 976 KB Output is correct
34 Correct 11 ms 2328 KB Output is correct
35 Correct 5 ms 2000 KB Output is correct
36 Correct 14 ms 2240 KB Output is correct
37 Correct 3 ms 1936 KB Output is correct
38 Correct 2 ms 1808 KB Output is correct
39 Correct 18 ms 2396 KB Output is correct
40 Partially correct 26 ms 2632 KB Partially correct - number of queries: 7583
41 Partially correct 46 ms 2388 KB Partially correct - number of queries: 5441
42 Partially correct 50 ms 2380 KB Partially correct - number of queries: 5441
43 Correct 18 ms 2448 KB Output is correct
44 Correct 16 ms 2464 KB Output is correct
45 Correct 12 ms 2332 KB Output is correct
46 Correct 2 ms 1812 KB Output is correct
47 Correct 22 ms 2300 KB Output is correct
48 Partially correct 43 ms 2472 KB Partially correct - number of queries: 6656
49 Correct 9 ms 2024 KB Output is correct
50 Partially correct 65 ms 2616 KB Partially correct - number of queries: 8883
51 Correct 33 ms 2360 KB Output is correct
52 Correct 3 ms 1860 KB Output is correct
53 Correct 3 ms 1944 KB Output is correct
54 Correct 35 ms 2288 KB Output is correct
55 Correct 4 ms 1792 KB Output is correct
56 Partially correct 63 ms 2596 KB Partially correct - number of queries: 8897
57 Partially correct 37 ms 2376 KB Partially correct - number of queries: 6563
58 Partially correct 42 ms 2452 KB Partially correct - number of queries: 6668
59 Partially correct 19 ms 2476 KB Partially correct - number of queries: 5440
60 Partially correct 29 ms 2464 KB Partially correct - number of queries: 5067
61 Correct 4 ms 2000 KB Output is correct
62 Correct 2 ms 1876 KB Output is correct
63 Correct 5 ms 2032 KB Output is correct
64 Correct 5 ms 2000 KB Output is correct
65 Correct 4 ms 1836 KB Output is correct
66 Correct 8 ms 1836 KB Output is correct
67 Correct 3 ms 1844 KB Output is correct
68 Correct 8 ms 1828 KB Output is correct
69 Correct 4 ms 1872 KB Output is correct
70 Correct 3 ms 1872 KB Output is correct
71 Partially correct 57 ms 2504 KB Partially correct - number of queries: 9120
72 Correct 6 ms 2220 KB Output is correct
73 Partially correct 54 ms 2524 KB Partially correct - number of queries: 8987
74 Partially correct 56 ms 2596 KB Partially correct - number of queries: 9042
75 Correct 5 ms 2000 KB Output is correct
76 Partially correct 33 ms 2696 KB Partially correct - number of queries: 7776
77 Partially correct 49 ms 2572 KB Partially correct - number of queries: 8994
78 Correct 9 ms 2220 KB Output is correct
79 Correct 34 ms 2604 KB Output is correct
80 Partially correct 72 ms 2532 KB Partially correct - number of queries: 8992
81 Partially correct 79 ms 2544 KB Partially correct - number of queries: 8989
82 Partially correct 67 ms 2524 KB Partially correct - number of queries: 8919
83 Correct 4 ms 2000 KB Output is correct
84 Partially correct 26 ms 2608 KB Partially correct - number of queries: 7347
85 Partially correct 78 ms 2516 KB Partially correct - number of queries: 8975
86 Partially correct 61 ms 2504 KB Partially correct - number of queries: 7721
87 Correct 5 ms 1924 KB Output is correct
88 Partially correct 68 ms 2604 KB Partially correct - number of queries: 7527
89 Partially correct 70 ms 2548 KB Partially correct - number of queries: 7649
90 Correct 4 ms 1872 KB Output is correct
91 Correct 9 ms 2284 KB Output is correct
92 Correct 39 ms 2376 KB Output is correct
93 Incorrect 87 ms 2008 KB Incorrect
94 Halted 0 ms 0 KB -