Submission #784961

# Submission time Handle Problem Language Result Execution time Memory
784961 2023-07-16T20:36:14 Z Sam_a17 The Big Prize (IOI17_prize) C++17
20 / 100
84 ms 2844 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;
  for(int i = 0; i < 400; 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 5 ms 2056 KB Output is correct
2 Correct 3 ms 2000 KB Output is correct
3 Correct 4 ms 2000 KB Output is correct
4 Correct 5 ms 2064 KB Output is correct
5 Correct 3 ms 2052 KB Output is correct
6 Correct 2 ms 2088 KB Output is correct
7 Correct 5 ms 2012 KB Output is correct
8 Correct 3 ms 1984 KB Output is correct
9 Correct 4 ms 1928 KB Output is correct
10 Correct 4 ms 2000 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 2008 KB Output is correct
2 Correct 2 ms 2076 KB Output is correct
3 Correct 4 ms 2088 KB Output is correct
4 Correct 3 ms 2088 KB Output is correct
5 Correct 4 ms 2032 KB Output is correct
6 Correct 4 ms 1968 KB Output is correct
7 Correct 2 ms 2048 KB Output is correct
8 Correct 5 ms 2100 KB Output is correct
9 Correct 4 ms 2000 KB Output is correct
10 Correct 3 ms 2000 KB Output is correct
11 Correct 6 ms 2200 KB Output is correct
12 Correct 4 ms 2128 KB Output is correct
13 Correct 9 ms 2212 KB Output is correct
14 Correct 5 ms 1244 KB Output is correct
15 Correct 8 ms 2380 KB Output is correct
16 Partially correct 66 ms 2536 KB Partially correct - number of queries: 7719
17 Correct 4 ms 2072 KB Output is correct
18 Partially correct 50 ms 2604 KB Partially correct - number of queries: 8991
19 Correct 3 ms 2128 KB Output is correct
20 Correct 18 ms 1912 KB Output is correct
21 Correct 33 ms 2380 KB Output is correct
22 Correct 7 ms 2256 KB Output is correct
23 Correct 4 ms 2092 KB Output is correct
24 Correct 4 ms 2024 KB Output is correct
25 Partially correct 23 ms 2508 KB Partially correct - number of queries: 5251
26 Partially correct 26 ms 2516 KB Partially correct - number of queries: 5167
27 Correct 3 ms 2136 KB Output is correct
28 Partially correct 54 ms 2560 KB Partially correct - number of queries: 8568
29 Partially correct 40 ms 2512 KB Partially correct - number of queries: 6584
30 Partially correct 75 ms 2844 KB Partially correct - number of queries: 8920
31 Correct 2 ms 2108 KB Output is correct
32 Correct 6 ms 2216 KB Output is correct
33 Correct 1 ms 976 KB Output is correct
34 Correct 15 ms 2380 KB Output is correct
35 Correct 6 ms 2128 KB Output is correct
36 Correct 9 ms 2404 KB Output is correct
37 Correct 5 ms 2248 KB Output is correct
38 Correct 3 ms 2100 KB Output is correct
39 Correct 26 ms 2376 KB Output is correct
40 Partially correct 28 ms 2676 KB Partially correct - number of queries: 7679
41 Partially correct 47 ms 2432 KB Partially correct - number of queries: 5537
42 Partially correct 46 ms 2456 KB Partially correct - number of queries: 5532
43 Partially correct 42 ms 2472 KB Partially correct - number of queries: 5040
44 Correct 27 ms 2360 KB Output is correct
45 Correct 17 ms 2380 KB Output is correct
46 Correct 3 ms 2100 KB Output is correct
47 Correct 19 ms 2444 KB Output is correct
48 Partially correct 32 ms 2552 KB Partially correct - number of queries: 6745
49 Correct 11 ms 2256 KB Output is correct
50 Partially correct 57 ms 2588 KB Partially correct - number of queries: 8977
51 Correct 15 ms 2460 KB Output is correct
52 Correct 5 ms 1992 KB Output is correct
53 Correct 5 ms 2100 KB Output is correct
54 Correct 15 ms 2460 KB Output is correct
55 Correct 4 ms 2088 KB Output is correct
56 Partially correct 60 ms 2632 KB Partially correct - number of queries: 8980
57 Partially correct 24 ms 2540 KB Partially correct - number of queries: 6662
58 Partially correct 60 ms 2504 KB Partially correct - number of queries: 6761
59 Partially correct 29 ms 2456 KB Partially correct - number of queries: 5540
60 Partially correct 45 ms 2376 KB Partially correct - number of queries: 5164
61 Correct 6 ms 1996 KB Output is correct
62 Correct 3 ms 2052 KB Output is correct
63 Correct 5 ms 2092 KB Output is correct
64 Correct 3 ms 2096 KB Output is correct
65 Correct 5 ms 1956 KB Output is correct
66 Correct 4 ms 2104 KB Output is correct
67 Correct 4 ms 2000 KB Output is correct
68 Correct 8 ms 1964 KB Output is correct
69 Correct 9 ms 2000 KB Output is correct
70 Correct 2 ms 2080 KB Output is correct
71 Partially correct 81 ms 2504 KB Partially correct - number of queries: 9217
72 Correct 10 ms 2368 KB Output is correct
73 Partially correct 47 ms 2632 KB Partially correct - number of queries: 9087
74 Partially correct 56 ms 2604 KB Partially correct - number of queries: 9141
75 Correct 6 ms 2176 KB Output is correct
76 Partially correct 48 ms 2508 KB Partially correct - number of queries: 7878
77 Partially correct 84 ms 2572 KB Partially correct - number of queries: 9061
78 Correct 8 ms 2384 KB Output is correct
79 Correct 38 ms 2616 KB Output is correct
80 Partially correct 57 ms 2604 KB Partially correct - number of queries: 9075
81 Partially correct 77 ms 2592 KB Partially correct - number of queries: 9089
82 Partially correct 73 ms 2632 KB Partially correct - number of queries: 8988
83 Correct 6 ms 2120 KB Output is correct
84 Partially correct 45 ms 2584 KB Partially correct - number of queries: 7459
85 Partially correct 32 ms 2588 KB Partially correct - number of queries: 9047
86 Partially correct 42 ms 2616 KB Partially correct - number of queries: 8337
87 Correct 7 ms 2256 KB Output is correct
88 Partially correct 37 ms 2580 KB Partially correct - number of queries: 7173
89 Correct 16 ms 2292 KB Output is correct
90 Correct 4 ms 2164 KB Output is correct
91 Correct 14 ms 2352 KB Output is correct
92 Correct 15 ms 2248 KB Output is correct
93 Incorrect 58 ms 2148 KB Incorrect
94 Halted 0 ms 0 KB -