Submission #1157982

#TimeUsernameProblemLanguageResultExecution timeMemory
1157982aligay100infaShopping (JOI21_shopping)C++20
0 / 100
70 ms12400 KiB
#include "Anna.h"
#include <iostream>
#include <vector>

using namespace std;

namespace {

int n, l, r, k, cnt, ans, idx, a[1000001], b[100000];

void send(int x) {
  for (int i = 0; i < 9; i++) SendA((x >> i) & 1);
}

}  // namespace

void InitA(int N, int L, int R) {
  n = N;
  l = L;
  r = R;
  idx = cnt = 0;
  k = 20;
  send(l / k);
  send(r / k);
}

void find() {
  int mn = b[0];
  // printf("%d %d\n", mn, a[mn]);
  if (r < mn) mn = l;
  for (int i = l; i < min(r, int(l / k) * k + k); i++) {
    if (a[i] < a[mn]) mn = i;
    // printf("%d %d\n", i, a[i]);
  }
  
  for (int i = max(int(r / k) * k, l); i <= r; i++) {
    if (a[i] < a[mn]) mn = i;
    // printf("%d %d\n", i, a[i]);
  }
  ans = mn;
}

void ReceiveA(bool x) {
  if (cnt >= 14) {
    cnt = 0;
    idx++;
  }
  b[idx] |= x << cnt;
  cnt++;
  // if (cnt == 14) printf("%d %d\n", idx, b[idx]);
  if (cnt == 14 && (idx & 1)) {
    a[b[idx - 1]] = b[idx];
  }
  
}

int Answer() {
  find();
  // printf("my ans %d\n", ans);
  return ans;
}
#include "Bruno.h"
#include <iostream>
#include <vector>

using namespace std;

namespace {

int n, a[1000000], cnt, l, r, k, idx, b[3];
bool stillF = true;

}  // namespace

void send(int x) {
  for (int i = 0; i < 14; i++) SendB((x >> i) & 1);
}

void InitB(int N, std::vector<int> P) {
  n = N;
  for(int i = 0; i < N; i++) {
    a[i] = P[i];
  }
  cnt = 0;
  k = 20;
  idx = 0;
}

void solve() {
  if (l == r) {
    send(n);
    send(n + 1);
  }
  else {
    int mn = (l + 1) * k;
    for (int i = (l + 1) * k; i < r * k; i++) {
      if (a[i] < a[mn]) mn = i;
    }
    // printf("%d %d\n", mn, a[mn]);
    send(mn);
    send(a[mn]);
  }
  for (int i = l * k; i < (l + 1) * k; i++) {
    send(i);
    send(a[i]);
    // printf("%d %d\n", i, a[i]);
  }
  
  for (int i = r * k; i < (r + 1) * k ; i++) {
    send(i);
    send(a[i]);
    // printf("%d %d\n", i, a[i]);
  }

}

void ReceiveB(bool y) {
  if (cnt >= 9) {
    cnt = 0;
    idx++;
  }
  b[idx] |= y << cnt;
  cnt++;
  if (idx == 1 && cnt == 9) {
    solve();
  }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...