Submission #784984

# Submission time Handle Problem Language Result Execution time Memory
784984 2023-07-16T20:50:16 Z Sam_a17 The Big Prize (IOI17_prize) C++17
20 / 100
80 ms 2748 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 = 500;

  
  if(n >= 150000) {
    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 2 ms 1812 KB Output is correct
2 Correct 3 ms 1872 KB Output is correct
3 Correct 4 ms 1872 KB Output is correct
4 Correct 2 ms 1888 KB Output is correct
5 Correct 2 ms 1844 KB Output is correct
6 Correct 4 ms 1872 KB Output is correct
7 Correct 4 ms 1872 KB Output is correct
8 Correct 4 ms 1872 KB Output is correct
9 Correct 2 ms 1856 KB Output is correct
10 Correct 4 ms 1872 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 1872 KB Output is correct
2 Correct 4 ms 1864 KB Output is correct
3 Correct 3 ms 1840 KB Output is correct
4 Correct 2 ms 1864 KB Output is correct
5 Correct 3 ms 1916 KB Output is correct
6 Correct 3 ms 1836 KB Output is correct
7 Correct 3 ms 1948 KB Output is correct
8 Correct 2 ms 1820 KB Output is correct
9 Correct 4 ms 1816 KB Output is correct
10 Correct 2 ms 1860 KB Output is correct
11 Correct 3 ms 2088 KB Output is correct
12 Correct 2 ms 1888 KB Output is correct
13 Correct 9 ms 2256 KB Output is correct
14 Correct 9 ms 1232 KB Output is correct
15 Correct 6 ms 2288 KB Output is correct
16 Partially correct 42 ms 2488 KB Partially correct - number of queries: 7627
17 Correct 4 ms 1920 KB Output is correct
18 Partially correct 44 ms 2616 KB Partially correct - number of queries: 8891
19 Correct 2 ms 1900 KB Output is correct
20 Correct 22 ms 1832 KB Output is correct
21 Correct 17 ms 2420 KB Output is correct
22 Correct 6 ms 2152 KB Output is correct
23 Correct 2 ms 1872 KB Output is correct
24 Correct 4 ms 1872 KB Output is correct
25 Partially correct 18 ms 2436 KB Partially correct - number of queries: 5157
26 Partially correct 35 ms 2368 KB Partially correct - number of queries: 5078
27 Correct 2 ms 1976 KB Output is correct
28 Partially correct 51 ms 2584 KB Partially correct - number of queries: 8460
29 Partially correct 23 ms 2556 KB Partially correct - number of queries: 6481
30 Partially correct 71 ms 2748 KB Partially correct - number of queries: 8816
31 Correct 2 ms 1892 KB Output is correct
32 Correct 8 ms 2088 KB Output is correct
33 Correct 1 ms 976 KB Output is correct
34 Correct 12 ms 2408 KB Output is correct
35 Correct 3 ms 1992 KB Output is correct
36 Correct 20 ms 2200 KB Output is correct
37 Correct 5 ms 2000 KB Output is correct
38 Correct 4 ms 1956 KB Output is correct
39 Correct 40 ms 2320 KB Output is correct
40 Partially correct 27 ms 2624 KB Partially correct - number of queries: 7579
41 Partially correct 19 ms 2464 KB Partially correct - number of queries: 5440
42 Partially correct 19 ms 2604 KB Partially correct - number of queries: 5434
43 Correct 41 ms 2412 KB Output is correct
44 Correct 14 ms 2408 KB Output is correct
45 Correct 26 ms 2272 KB Output is correct
46 Correct 3 ms 1848 KB Output is correct
47 Correct 41 ms 2380 KB Output is correct
48 Partially correct 23 ms 2512 KB Partially correct - number of queries: 6645
49 Correct 9 ms 2000 KB Output is correct
50 Partially correct 77 ms 2616 KB Partially correct - number of queries: 8876
51 Correct 34 ms 2372 KB Output is correct
52 Correct 3 ms 1868 KB Output is correct
53 Correct 5 ms 1992 KB Output is correct
54 Correct 31 ms 2392 KB Output is correct
55 Correct 2 ms 1852 KB Output is correct
56 Partially correct 31 ms 2620 KB Partially correct - number of queries: 8892
57 Partially correct 24 ms 2544 KB Partially correct - number of queries: 6562
58 Partially correct 59 ms 2532 KB Partially correct - number of queries: 6663
59 Partially correct 20 ms 2492 KB Partially correct - number of queries: 5439
60 Partially correct 40 ms 2384 KB Partially correct - number of queries: 5066
61 Correct 5 ms 1972 KB Output is correct
62 Correct 3 ms 1860 KB Output is correct
63 Correct 4 ms 2000 KB Output is correct
64 Correct 5 ms 1960 KB Output is correct
65 Correct 4 ms 1872 KB Output is correct
66 Correct 8 ms 1880 KB Output is correct
67 Correct 3 ms 1872 KB Output is correct
68 Correct 8 ms 1920 KB Output is correct
69 Correct 8 ms 1960 KB Output is correct
70 Correct 2 ms 1868 KB Output is correct
71 Partially correct 59 ms 2592 KB Partially correct - number of queries: 9113
72 Correct 9 ms 2292 KB Output is correct
73 Partially correct 74 ms 2516 KB Partially correct - number of queries: 8992
74 Partially correct 80 ms 2592 KB Partially correct - number of queries: 9033
75 Correct 3 ms 2000 KB Output is correct
76 Partially correct 49 ms 2536 KB Partially correct - number of queries: 7775
77 Partially correct 58 ms 2516 KB Partially correct - number of queries: 8983
78 Correct 8 ms 2224 KB Output is correct
79 Correct 39 ms 2620 KB Output is correct
80 Partially correct 75 ms 2528 KB Partially correct - number of queries: 8875
81 Partially correct 57 ms 2568 KB Partially correct - number of queries: 8987
82 Partially correct 76 ms 2616 KB Partially correct - number of queries: 8911
83 Correct 4 ms 1976 KB Output is correct
84 Partially correct 63 ms 2564 KB Partially correct - number of queries: 7367
85 Partially correct 35 ms 2592 KB Partially correct - number of queries: 8971
86 Partially correct 56 ms 2600 KB Partially correct - number of queries: 8226
87 Correct 6 ms 2184 KB Output is correct
88 Partially correct 41 ms 2536 KB Partially correct - number of queries: 7323
89 Correct 17 ms 2188 KB Output is correct
90 Correct 2 ms 1864 KB Output is correct
91 Correct 17 ms 2496 KB Output is correct
92 Correct 38 ms 2272 KB Output is correct
93 Incorrect 44 ms 2096 KB Incorrect
94 Halted 0 ms 0 KB -