Submission #1157890

#TimeUsernameProblemLanguageResultExecution timeMemory
1157890aligay100infaShopping (JOI21_shopping)C++20
1 / 100
61 ms8620 KiB
#include "Anna.h"
#include <iostream>
#include <vector>

using namespace std;

namespace {

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

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;
}

void find() {
  int mn = l;
  for (int i = l; i <= r; i++) {
    if (a[i] < a[mn]) mn = i;
  }
  ans = mn;
}

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

int Answer() {
  return ans;
}
#include "Bruno.h"
#include <vector>

using namespace std;

namespace {

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

}  // namespace

void send(int x) {
  for (int i = 0; i < 10; 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];
    send(a[i]);
  }
  cnt = 0;
  k = 1;
}

void solve() {
  if (l == r) send(0);
  else {
    int mn = 0;
    for (int i = (l + 1) * k; i < r * k; i++) {
      if (a[i] < a[mn]) mn = i;
    }
    send(mn);
  }

}

void ReceiveB(bool y) {
  if (cnt < 9 && stillF) {
    l |= y << cnt;
    cnt++;
  } else if (cnt < 9) {
    r |= y << cnt;
    cnt++;
    if (cnt == 9) {
      solve();
    }
  } else {
    cnt = 0;
    stillF = false;
  }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...