Submission #263604

# Submission time Handle Problem Language Result Execution time Memory
263604 2020-08-13T20:46:25 Z patrikpavic2 Two Transportations (JOI19_transportations) C++17
0 / 100
3000 ms 36064 KB
#include "Azer.h"
#include <vector>
#include <queue>
#include <cstdlib>
#include <cstdio>

#define X first
#define Y second
#define PB push_back

using namespace std;

typedef vector < int > vi;
typedef pair < int, int > pii;

namespace {

const int N = 2005;

int n;
vector < pii > v[N];
queue < bool > info;
int dis[N], mks;
int sto = 0, kolko = 0, jos = 0, ret = 0, brj2, cnt = 0, tko = 0;
pii tmp; int cv, brj;

pii nadi_najblizeg(){
	int bst = 0, dod = 501; mks = 0;
	for(int i = 0;i < n;i++)
		if(dis[i] > mks) mks = dis[i];
	for(int i = 0;i < n;i++){
		if(dis[i] == -1) continue;
		for(pii nxt : v[i]){
			if(dis[nxt.X] != -1) continue;
			if(nxt.Y + dis[i] - mks < dod){
				dod = nxt.Y + dis[i] - mks;
				bst = nxt.X;
			}
		}
	}
	tko = !((cnt * (mks + n)) & 8);
	return {bst, dod};
}

void posalji_broj(int x, int ln){
	//printf("A: saljem %d u %d\n", x, ln);
	for(int i = ln - 1;i >= 0;i--)
		SendA(!!(x & (1 << i)));
}

void korak(){
	tmp = nadi_najblizeg();
	//printf("A: radim korak tko = %d\n", tko);
	cv = tmp.X, brj = tmp.Y;
	//printf("A : cv = %d brj = %d\n", cv, brj);
	if(tko){
		sto = 1; jos = 1; ret = 0;
		posalji_broj(brj, 9);
	}
	else{
		sto = 4; jos = 9; ret = 0;
	}
}

} 

void InitA(int n, int a, vi U, vi V, vi C) {
	::n = n; 
	for(int i = 0;i < a;i++){
		v[U[i]].PB({V[i], C[i]});
		v[V[i]].PB({U[i], C[i]});
	}
	for(int i = 0; i < n;i++)
		dis[i] = -1;
	dis[0] = 0; cnt++;
	SendA(0);
	Answer();
}



void ReceiveA(bool x) {
	if(sto == 0) {
		korak(); return;
	}
	ret = 2 * ret + x; jos--;
	//printf("A: jos = %d ret = %d sto = %d\n", jos, ret, sto);
	if(jos != 0) return;
	if(sto == 1){
		if(ret){
			jos = 9;
			sto = 2;
			ret = 0;
		}
		else{
			posalji_broj(cv, 11);
			dis[cv] = mks + brj;
			if((++cnt) != n)
				korak();
		}
	}
	else if(sto == 2){
		brj = ret; ret = 0;
		jos = 11; 
		sto = 3;
	}
	else if(sto == 3){
		cv = ret; ret = 0;
		dis[cv] = mks + brj;
		if((++cnt) != n)
			korak();
	}
	else if(sto == 4){
		brj2 = ret; ret = 0;
		if(brj2 <= brj){
			posalji_broj(0, 1);
			brj = brj2;
			sto = 5; jos = 11;
		}
		else{
			posalji_broj(1, 1);
			posalji_broj(brj, 9);
			posalji_broj(cv, 11);
			dis[cv] = mks + brj;
			if((++cnt) != n)
				korak();
		}
	}
	else if(sto == 5){
		cv = ret; ret = 0;
		dis[cv] = mks + brj;
		if((++cnt) != n)
			korak();
	}
}

vi Answer() {
  vi ans(n);
  for (int k = 0; k < n; ++k) {
    ans[k] = dis[k];
  }
  return ans;
}








#include "Baijan.h"
#include <vector>
#include <queue>
#include <cstdlib>
#include <cstdio>

#define X first
#define Y second
#define PB push_back

using namespace std;

typedef vector < int > vi;
typedef pair < int, int > pii;

namespace {

const int N = 2005;

int n;
vector < pii > v[N];
queue < bool > info;
int dis[N], mks;
int sto = 0, kolko = 0, jos = 0, ret = 0, brj2, cnt = 0, tko = 0;
pii tmp; int cv, brj;

pii nadi_najblizeg(){
	int bst = 0, dod = 501; mks = 0;
	for(int i = 0;i < n;i++)
		if(dis[i] > mks) mks = dis[i];
	for(int i = 0;i < n;i++){
		if(dis[i] == -1) continue;
		for(pii nxt : v[i]){
			if(dis[nxt.X] != -1) continue;
			if(nxt.Y + dis[i] - mks < dod){
				dod = nxt.Y + dis[i] - mks;
				bst = nxt.X;
			}
		}
	}
	tko = !!((cnt * (mks + n)) & 8);
	return {bst, dod};
}

void posalji_broj(int x, int ln){
	//printf("B: saljem %d u %d\n", x, ln);
	for(int i = ln - 1;i >= 0;i--)
		SendB(!!(x & (1 << i)));
}

void korak(){
	tmp = nadi_najblizeg();
	//printf("B: radim korak tko = %d\n", tko);
	cv = tmp.X, brj = tmp.Y;
	//printf("B : cv = %d brj = %d\n", cv, brj);
	if(tko){
		sto = 1; jos = 1; ret = 0;
		posalji_broj(brj, 9);
	}
	else{
		sto = 4; jos = 9; ret = 0;
	}
} 

}

void InitB(int n, int a, vi U, vi V, vi C) {
	::n = n; 
	for(int i = 0;i < a;i++){
		v[U[i]].PB({V[i], C[i]});
		v[V[i]].PB({U[i], C[i]});
	}
	for(int i = 0; i < n;i++)
		dis[i] = -1;
	dis[0] = 0; cnt++;
	SendB(0);
	
}



void ReceiveB(bool x) {
	if(sto == 0) {
		korak(); return;
	}
	ret = 2 * ret + x; jos--;
	//printf("B: jos = %d ret = %d sto = %d\n", jos, ret, sto);
	if(jos != 0) return;
	if(sto == 1){
		if(ret){
			//printf("tu sam\n");
			jos = 9;
			sto = 2;
			ret = 0;
		}
		else{
			posalji_broj(cv, 11);
			dis[cv] = mks + brj;
			if((++cnt) != n)
				korak();
		}
	}
	else if(sto == 2){
		brj = ret; ret = 0;
		jos = 11; 
		sto = 3;
	}
	else if(sto == 3){
		cv = ret; ret = 0;
		dis[cv] = mks + brj;
		if((++cnt) != n)
			korak();
	}
	else if(sto == 4){
		brj2 = ret; ret = 0;
		if(brj2 <= brj){
			brj = brj2;
			sto = 5; jos = 11; ret = 0;
			posalji_broj(0, 1);
		}
		else{
			posalji_broj(1, 1);
			posalji_broj(brj, 9);
			posalji_broj(cv, 11);
			dis[cv] = mks + brj;
			if((++cnt) != n)
				korak();
		}
	}
	else if(sto == 5){
		cv = ret; ret = 0;
		dis[cv] = mks + brj;
		if((++cnt) != n)
			korak();
	}
}








Compilation message

Azer.cpp:24:14: warning: '{anonymous}::kolko' defined but not used [-Wunused-variable]
   24 | int sto = 0, kolko = 0, jos = 0, ret = 0, brj2, cnt = 0, tko = 0;
      |              ^~~~~

Baijan.cpp:24:14: warning: '{anonymous}::kolko' defined but not used [-Wunused-variable]
   24 | int sto = 0, kolko = 0, jos = 0, ret = 0, brj2, cnt = 0, tko = 0;
      |              ^~~~~
# Verdict Execution time Memory Grader output
1 Correct 949 ms 1536 KB Output is correct
2 Incorrect 405 ms 640 KB Wrong Answer [2]
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 388 ms 640 KB Wrong Answer [2]
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 896 ms 1536 KB Output is correct
2 Incorrect 382 ms 640 KB Wrong Answer [2]
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 424 ms 1280 KB Output is correct
2 Correct 412 ms 1608 KB Output is correct
3 Correct 1646 ms 23776 KB Output is correct
4 Correct 358 ms 1760 KB Output is correct
5 Correct 1442 ms 17464 KB Output is correct
6 Correct 408 ms 1536 KB Output is correct
7 Correct 476 ms 1600 KB Output is correct
8 Correct 394 ms 1600 KB Output is correct
9 Execution timed out 3000 ms 36064 KB
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 424 ms 1280 KB Output is correct
2 Correct 412 ms 1608 KB Output is correct
3 Correct 1646 ms 23776 KB Output is correct
4 Correct 358 ms 1760 KB Output is correct
5 Correct 1442 ms 17464 KB Output is correct
6 Correct 408 ms 1536 KB Output is correct
7 Correct 476 ms 1600 KB Output is correct
8 Correct 394 ms 1600 KB Output is correct
9 Execution timed out 3000 ms 36064 KB
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 424 ms 1280 KB Output is correct
2 Correct 412 ms 1608 KB Output is correct
3 Correct 1646 ms 23776 KB Output is correct
4 Correct 358 ms 1760 KB Output is correct
5 Correct 1442 ms 17464 KB Output is correct
6 Correct 408 ms 1536 KB Output is correct
7 Correct 476 ms 1600 KB Output is correct
8 Correct 394 ms 1600 KB Output is correct
9 Execution timed out 3000 ms 36064 KB
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 949 ms 1536 KB Output is correct
2 Incorrect 405 ms 640 KB Wrong Answer [2]
3 Halted 0 ms 0 KB -