Submission #776364

# Submission time Handle Problem Language Result Execution time Memory
776364 2023-07-07T18:18:53 Z Piokemon Two Transportations (JOI19_transportations) C++17
0 / 100
404 ms 656 KB
#include "Azer.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
    
namespace {

int n;
int dst[1009];
int nr=0;
int wczyt,ter;
pair<int,int> cel;
vector<pair<int,int>> graf[1009];
priority_queue<pair<int,int>> djik;

void napisz(int v, int d){
    for (int x=0;x<d;x++) SendA(v & (1<<x));
}

void oblicz(int v, int d){
    //cout << "A: " << v << ' ' << d << '\n';
    if (dst[v]>d){
        dst[v] = d;
        for (pair<int,int> x:graf[v]){
            if (dst[x.first] > dst[v] + x.second){
                dst[x.first] = dst[v] + x.second;
                djik.push({-dst[x.first],x.first});
            }
        }
    }
    while(!djik.empty() && dst[djik.top().second] != -djik.top().first) djik.pop();
    if (djik.empty()){
        djik.push({-1e9,1});
    }
    nr++;
    napisz(-djik.top().first,21);
    napisz(djik.top().second,10);
}

}  // namespace

void InitA(int N, int A, vector<int> U, vector<int> V,
           vector<int> C) {
  n= N;
  for (int x=0;x<A;x++){
    graf[U[x]].push_back({V[x],C[x]});
    graf[V[x]].push_back({U[x],C[x]});
  }
  for (int x=0;x<=n;x++) dst[x] = 1e9;
  wczyt = 0;
  ter = 0;
  oblicz(0,0);
}

void ReceiveA(bool x) {
    if (nr>n) return;
    if (ter>=21) wczyt += x * (1<<(ter-21));
    else wczyt += x * (1<<ter);
    ter++;
    if (ter==21){
        cel.second = wczyt;
        wczyt = 0;
    }
    else if (ter==31){
        cel.first = wczyt;
        wczyt = 0;
        ter=0;
        if (-djik.top().first <= cel.second){
            pair<int,int> temp = djik.top(); djik.pop();
            oblicz(temp.second,-temp.first);
        }
        else{
            oblicz(cel.first,cel.second);
        }
    }
}

vector<int> Answer() {
  vector<int> ans(n);
  for (int k = 0; k < n; ++k) {
    ans[k] = dst[k];
  }
  return ans;
}
#include "Baijan.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
    
namespace {

int n;
int dst[1009];
int nr=0;
int wczyt,ter;
pair<int,int> cel;
vector<pair<int,int>> graf[1009];
priority_queue<pair<int,int>> djik;

void napisz(int v, int d){
    for (int x=0;x<d;x++) SendB(v & (1<<x));
}

void oblicz(int v, int d){
  //cout << "B: " << v << ' ' << d << '\n';
    if (dst[v]>d){
        dst[v] = d;
        for (pair<int,int> x:graf[v]){
            if (dst[x.first] > dst[v] + x.second){
                dst[x.first] = dst[v] + x.second;
                djik.push({-dst[x.first],x.first});
            }
        }
    }
    while(!djik.empty() && dst[djik.top().second] != -djik.top().first) djik.pop();
    if (djik.empty()){
        djik.push({-1e9,1});
    }
    nr++;
}

}  // namespace

void InitB(int N, int B, vector<int> S, vector<int> T,
           vector<int> D) {
  n= N;
  for (int x=0;x<B;x++){
    graf[S[x]].push_back({T[x],D[x]});
    graf[T[x]].push_back({S[x],D[x]});
  }
  for (int x=0;x<=n;x++) dst[x] = 1e9;
  wczyt = 0;
  ter = 0;
  oblicz(0,0);
}

void ReceiveB(bool y) {
  if (nr>n) return;
  if (ter>=21) wczyt += y * (1<<(ter-21));
  else wczyt += y * (1<<ter);
  ter++;
  if (ter==21){
    cel.second = wczyt;
    wczyt = 0;
  }
  else if(ter==31){
    cel.first = wczyt;
    wczyt = 0;
    ter=0;
    napisz(-djik.top().first,21);
    napisz(djik.top().second,10);
    if (-djik.top().first < cel.second){
        pair<int,int> temp = djik.top(); djik.pop();
        oblicz(temp.second,-temp.first);
    }
    else{
        oblicz(cel.first,cel.second);
    }
  }
}
# Verdict Execution time Memory Grader output
1 Runtime error 0 ms 200 KB Execution killed with signal 13
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 400 KB Output is correct
2 Runtime error 1 ms 456 KB Execution killed with signal 11
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 1 ms 456 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 404 ms 656 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 404 ms 656 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 404 ms 656 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 0 ms 200 KB Execution killed with signal 13
2 Halted 0 ms 0 KB -