Submission #987364

# Submission time Handle Problem Language Result Execution time Memory
987364 2024-05-22T16:20:02 Z kachim2 Two Transportations (JOI19_transportations) C++17
14 / 100
484 ms 16356 KB

#include "Azer.h"
#include <functional>
#include <iostream>
#include <queue>
#include <vector>
namespace {

int N, A;
int variable_example[500000];
bool visited[500000]{0};
int countv = 1;
std::priority_queue<std::pair<int, int>, std::vector<std::pair<int, int>>,
                    std::greater<std::pair<int, int>>>
    q;
std::pair<int, int> currently_recieving;
int recieved = 0, prev = 0;
std::vector<std::vector<std::pair<int, int>>> graph(2005);
// namespace
void sendnbit(int bits, int num) {
  for (int i = 0; i < bits; i++) {
    SendA(num >> (bits - 1) & 1);
    num <<= 1;
  }
}
} // namespace
void InitA(int N, int A, std::vector<int> U, std::vector<int> V,
           std::vector<int> C) {
  visited[0] = 1;
  ::N = N;
  ::A = A;
  for (int i = 0; i < A; ++i) {
    graph[U[i]].push_back({V[i], C[i]});
    graph[V[i]].push_back({U[i], C[i]});
  }
  for (auto a : graph[0]) {
    q.push({a.second, a.first});
  }
  currently_recieving = {0, 9};
          if (!q.empty()) {
          sendnbit(9, q.top().first - prev);
        } else {
          sendnbit(9, 511);
        }
}

void ReceiveA(bool x) {
  currently_recieving.first++;
  recieved <<= 1;
  recieved |= (int)x;
  if (currently_recieving.first == currently_recieving.second) {
    std ::cerr << ' ';
    if (currently_recieving.second == 9) {
       while (!q.empty())
        if (visited[q.top().second]) {
          q.pop();
        } else
          break;
      if (q.empty()) {
        currently_recieving = {0, 11};
        prev = recieved + prev;
      } else if (q.top().first <= recieved + prev) {
        sendnbit(11, q.top().second );
        prev = q.top().first;
        variable_example[q.top().second] = q.top().first;
        visited[q.top().second] = true;
        countv++;
        auto p = q.top();
        q.pop();
        for (auto a : graph[p.second]) {
          if (!visited[a.first])
            q.push({a.second + prev, a.first});
        }
      if (countv != N) {
        if (!q.empty()) {
          sendnbit(9, q.top().first - prev);
        } else {
          sendnbit(9, 511);
        }
      }
        currently_recieving = {0, 9};
      } else {
        currently_recieving = {0, 11};
        prev = recieved + prev;
      }
    } else {
      countv++;
      visited[recieved] = 1;
      variable_example[recieved] = prev;
      for (auto a : graph[recieved]) {
        if (!visited[a.first])
          q.push({a.second + prev, a.first});
      }
      if (countv != N) {
        if (!q.empty()) {
          sendnbit(9, q.top().first - prev);
        } else {
          sendnbit(9, 511);
        }
      }
      currently_recieving = {0, 9};
    }
    recieved = 0;
  }
}

std::vector<int> Answer() {
  std::vector<int> ans(N);
  for (int k = 0; k < N; ++k) {
    ans[k] = variable_example[k];
  }
  return ans;
}

#include "Baijan.h"
#include <functional>
#include <iostream>
#include <queue>
#include <vector>
namespace {

int N, A;
int variable_example[500000];
bool visited[500000]{0};
int countv = 0;
std::priority_queue<std::pair<int, int>, std::vector<std::pair<int, int>>,
                    std::greater<std::pair<int, int>>>
    q;
std::pair<int, int> currently_recieving;
int recieved = 0, prev = 0;
std::vector<std::vector<std::pair<int, int>>> graph(2005);
// namespace
void sendnbit(int bits, int num) {
  for (int i = 0; i < bits; i++) {
    SendB(num >> (bits - 1) & 1);
    num <<= 1;
  }
}
} // namespace
void InitB(int N, int A, std::vector<int> U, std::vector<int> V,
           std::vector<int> C) {
  visited[0] = 1;
  ::N = N;
  ::A = A;
  for (int i = 0; i < A; ++i) {
    graph[U[i]].push_back({V[i], C[i]});
    graph[V[i]].push_back({U[i], C[i]});
  }
  for (auto a : graph[0]) {
    q.push({a.second, a.first});
  }
  currently_recieving = {0, 9};
}

void ReceiveB(bool x) {
  currently_recieving.first++;
  recieved <<= 1;
  recieved |= (int)x;
  if (currently_recieving.first == currently_recieving.second) {
    std ::cerr << ' ';
    if (currently_recieving.second == 9) {
      while (!q.empty())
        if (visited[q.top().second]) {
          q.pop();
        } else
          break;
      if (q.empty()) {
        sendnbit(9, 511);
      } else {
        sendnbit(9, q.top().first - prev);
      }
      if (q.empty()) {
        currently_recieving = {0, 11};
        prev = recieved + prev;
      } else if (q.top().first < recieved + prev) {
        sendnbit(11, q.top().second );
        prev = q.top().first;
        variable_example[q.top().second] = q.top().first;
        visited[q.top().second] = true;
        countv++;
        auto p = q.top();
        q.pop();
        for (auto a : graph[p.second]) {
          if (!visited[a.first])
            q.push({a.second + prev, a.first});
        }
        if (countv != N) {
        }
        currently_recieving = {0, 9};
      } else {
        currently_recieving = {0, 11};
        prev = recieved + prev;
      }
    } else {
      countv++;
      visited[recieved] = 1;
      variable_example[recieved] = prev;
      for (auto a : graph[recieved]) {
        if (!visited[a.first])
          q.push({a.second + prev, a.first});
      }
      currently_recieving = {0, 9};
    }
    recieved = 0;
  }
}
# Verdict Execution time Memory Grader output
1 Correct 304 ms 3384 KB Output is correct
2 Correct 2 ms 968 KB Output is correct
3 Correct 365 ms 3156 KB Output is correct
4 Correct 393 ms 12424 KB Output is correct
5 Correct 18 ms 3576 KB Output is correct
6 Correct 477 ms 3200 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 1072 KB Output is correct
2 Correct 384 ms 3200 KB Output is correct
3 Incorrect 3 ms 1208 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 429 ms 1096 KB Output is correct
2 Correct 2 ms 956 KB Output is correct
3 Correct 484 ms 3120 KB Output is correct
4 Correct 386 ms 3208 KB Output is correct
5 Correct 367 ms 904 KB Output is correct
6 Correct 331 ms 3192 KB Output is correct
7 Correct 304 ms 1152 KB Output is correct
8 Correct 426 ms 3376 KB Output is correct
9 Correct 403 ms 1064 KB Output is correct
10 Correct 313 ms 3140 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 144 ms 3144 KB Output is correct
2 Correct 202 ms 3064 KB Output is correct
3 Correct 200 ms 16356 KB Output is correct
4 Incorrect 2 ms 3416 KB Output isn't correct
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 144 ms 3144 KB Output is correct
2 Correct 202 ms 3064 KB Output is correct
3 Correct 200 ms 16356 KB Output is correct
4 Incorrect 2 ms 3416 KB Output isn't correct
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 144 ms 3144 KB Output is correct
2 Correct 202 ms 3064 KB Output is correct
3 Correct 200 ms 16356 KB Output is correct
4 Incorrect 2 ms 3416 KB Output isn't correct
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 304 ms 3384 KB Output is correct
2 Correct 2 ms 968 KB Output is correct
3 Correct 365 ms 3156 KB Output is correct
4 Correct 393 ms 12424 KB Output is correct
5 Correct 18 ms 3576 KB Output is correct
6 Correct 477 ms 3200 KB Output is correct
7 Correct 2 ms 1072 KB Output is correct
8 Correct 384 ms 3200 KB Output is correct
9 Incorrect 3 ms 1208 KB Output isn't correct
10 Halted 0 ms 0 KB -