Submission #784956

# Submission time Handle Problem Language Result Execution time Memory
784956 2023-07-16T20:34:02 Z Sam_a17 The Big Prize (IOI17_prize) C++17
20 / 100
82 ms 2804 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 < 200; 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 1708 KB Output is correct
2 Correct 3 ms 1712 KB Output is correct
3 Correct 3 ms 1708 KB Output is correct
4 Correct 2 ms 1604 KB Output is correct
5 Correct 3 ms 1744 KB Output is correct
6 Correct 3 ms 1580 KB Output is correct
7 Correct 2 ms 1708 KB Output is correct
8 Correct 2 ms 1720 KB Output is correct
9 Correct 3 ms 1616 KB Output is correct
10 Correct 3 ms 1616 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 1764 KB Output is correct
2 Correct 4 ms 1708 KB Output is correct
3 Correct 3 ms 1744 KB Output is correct
4 Correct 3 ms 1616 KB Output is correct
5 Correct 2 ms 1736 KB Output is correct
6 Correct 2 ms 1596 KB Output is correct
7 Correct 3 ms 1712 KB Output is correct
8 Correct 2 ms 1724 KB Output is correct
9 Correct 3 ms 1712 KB Output is correct
10 Correct 2 ms 1748 KB Output is correct
11 Correct 5 ms 1964 KB Output is correct
12 Correct 3 ms 1712 KB Output is correct
13 Correct 7 ms 2128 KB Output is correct
14 Correct 4 ms 1232 KB Output is correct
15 Correct 6 ms 2116 KB Output is correct
16 Partially correct 65 ms 2492 KB Partially correct - number of queries: 7523
17 Correct 2 ms 1712 KB Output is correct
18 Partially correct 56 ms 2624 KB Partially correct - number of queries: 8802
19 Correct 3 ms 1632 KB Output is correct
20 Correct 9 ms 1788 KB Output is correct
21 Correct 31 ms 2216 KB Output is correct
22 Correct 9 ms 1956 KB Output is correct
23 Correct 3 ms 1704 KB Output is correct
24 Correct 3 ms 1712 KB Output is correct
25 Partially correct 38 ms 2400 KB Partially correct - number of queries: 5060
26 Correct 42 ms 2344 KB Output is correct
27 Correct 3 ms 1712 KB Output is correct
28 Partially correct 30 ms 2616 KB Partially correct - number of queries: 8365
29 Partially correct 41 ms 2500 KB Partially correct - number of queries: 6389
30 Partially correct 68 ms 2620 KB Partially correct - number of queries: 8728
31 Correct 3 ms 1616 KB Output is correct
32 Correct 7 ms 2072 KB Output is correct
33 Correct 1 ms 976 KB Output is correct
34 Correct 28 ms 2216 KB Output is correct
35 Correct 4 ms 1840 KB Output is correct
36 Correct 9 ms 2180 KB Output is correct
37 Correct 2 ms 1804 KB Output is correct
38 Correct 2 ms 1616 KB Output is correct
39 Correct 37 ms 2248 KB Output is correct
40 Partially correct 65 ms 2528 KB Partially correct - number of queries: 7484
41 Partially correct 28 ms 2500 KB Partially correct - number of queries: 5345
42 Partially correct 44 ms 2412 KB Partially correct - number of queries: 5341
43 Correct 31 ms 2320 KB Output is correct
44 Correct 34 ms 2248 KB Output is correct
45 Correct 11 ms 2264 KB Output is correct
46 Correct 2 ms 1712 KB Output is correct
47 Correct 39 ms 2240 KB Output is correct
48 Partially correct 49 ms 2508 KB Partially correct - number of queries: 6555
49 Correct 4 ms 1892 KB Output is correct
50 Partially correct 61 ms 2664 KB Partially correct - number of queries: 8784
51 Correct 30 ms 2300 KB Output is correct
52 Correct 4 ms 1708 KB Output is correct
53 Correct 2 ms 1788 KB Output is correct
54 Correct 25 ms 2344 KB Output is correct
55 Correct 3 ms 1676 KB Output is correct
56 Partially correct 49 ms 2704 KB Partially correct - number of queries: 8797
57 Partially correct 51 ms 2444 KB Partially correct - number of queries: 6464
58 Partially correct 56 ms 2504 KB Partially correct - number of queries: 6570
59 Partially correct 43 ms 2416 KB Partially correct - number of queries: 5338
60 Correct 45 ms 2376 KB Output is correct
61 Correct 5 ms 1828 KB Output is correct
62 Correct 3 ms 1616 KB Output is correct
63 Correct 4 ms 1708 KB Output is correct
64 Correct 2 ms 1764 KB Output is correct
65 Correct 3 ms 1716 KB Output is correct
66 Correct 6 ms 1572 KB Output is correct
67 Correct 3 ms 1704 KB Output is correct
68 Correct 6 ms 1616 KB Output is correct
69 Correct 3 ms 1736 KB Output is correct
70 Correct 2 ms 1744 KB Output is correct
71 Partially correct 51 ms 2616 KB Partially correct - number of queries: 9019
72 Correct 7 ms 2168 KB Output is correct
73 Partially correct 58 ms 2568 KB Partially correct - number of queries: 8883
74 Partially correct 74 ms 2632 KB Partially correct - number of queries: 8942
75 Correct 4 ms 1744 KB Output is correct
76 Partially correct 78 ms 2516 KB Partially correct - number of queries: 7673
77 Partially correct 82 ms 2536 KB Partially correct - number of queries: 8803
78 Correct 4 ms 2164 KB Output is correct
79 Correct 33 ms 2620 KB Output is correct
80 Partially correct 57 ms 2604 KB Partially correct - number of queries: 8879
81 Partially correct 68 ms 2588 KB Partially correct - number of queries: 8879
82 Partially correct 58 ms 2804 KB Partially correct - number of queries: 8800
83 Correct 4 ms 1744 KB Output is correct
84 Partially correct 64 ms 2508 KB Partially correct - number of queries: 7276
85 Partially correct 61 ms 2504 KB Partially correct - number of queries: 8881
86 Partially correct 70 ms 2532 KB Partially correct - number of queries: 8292
87 Correct 7 ms 2000 KB Output is correct
88 Partially correct 53 ms 2564 KB Partially correct - number of queries: 7818
89 Partially correct 52 ms 2564 KB Partially correct - number of queries: 8167
90 Correct 3 ms 1872 KB Output is correct
91 Correct 15 ms 2248 KB Output is correct
92 Correct 38 ms 2296 KB Output is correct
93 Incorrect 61 ms 1992 KB Incorrect
94 Halted 0 ms 0 KB -