Submission #211962

# Submission time Handle Problem Language Result Execution time Memory
211962 2020-03-21T20:34:02 Z mode149256 Saveit (IOI10_saveit) C++14
0 / 100
375 ms 12272 KB
#include <bits/stdc++.h>
#include "grader.h"
#include "encoder.h"
using namespace std;

typedef long long ll;
typedef long double ld;
typedef complex<ld> cd;

typedef pair<int, int> pi;
typedef pair<ll, ll> pl;
typedef pair<ld, ld> pd;

typedef vector<int> vi;
typedef vector<vi> vii;
typedef vector<ld> vd;
typedef vector<ll> vl;
typedef vector<vl> vll;
typedef vector<pi> vpi;
typedef vector<vpi> vpii;
typedef vector<pl> vpl;
typedef vector<cd> vcd;
typedef vector<pd> vpd;
typedef vector<bool> vb;
typedef vector<vb> vbb;
typedef std::string str;
typedef std::vector<str> vs;

#define x first
#define y second
#define debug(...) cout<<"["<<#__VA_ARGS__<<": "<<__VA_ARGS__<<"]\n"

const int MOD = 1000000007;
const ll INF = std::numeric_limits<ll>::max();
const int MX = 100101;
const ld PI = 3.14159265358979323846264338327950288419716939937510582097494L;

template<typename T>
pair<T, T> operator+(const pair<T, T> &a, const pair<T, T> &b) { return pair<T, T>(a.x + b.x, a.y + b.y); }
template<typename T>
pair<T, T> operator-(const pair<T, T> &a, const pair<T, T> &b) { return pair<T, T>(a.x - b.x, a.y - b.y); }
template<typename T>
T operator*(const pair<T, T> &a, const pair<T, T> &b) { return (a.x * b.x + a.y * b.y); }
template<typename T>
T operator^(const pair<T, T> &a, const pair<T, T> &b) { return (a.x * b.y - a.y * b.x); }

template<typename T>
void print(vector<T> vec, string name = "") {
	cout << name;
	for (auto u : vec)
		cout << u << ' ';
	cout << '\n';
}


void encode(int nv, int nh, int ne, int *v1, int *v2) {
	int N = nv;
	int H = nh;
	int P = ne;
	vii edges(N);
	vii visos(N);

	vii yra(H, vi(N, 0));

	for (int i = 0; i < P; ++i)
	{
		int a = v1[i];
		int b = v2[i];
		if (a < H or b < H) {
			edges[a].emplace_back(b);
			edges[b].emplace_back(a);
			if (a >= H) swap(a, b);
			yra[a][b] = 1;
		}
		visos[a].emplace_back(b);
		visos[b].emplace_back(a);
	}

	auto encode = [&](int a) {
		// printf("encodinu a = %d\n", a);
		for (int i = 0; i < 10; ++i)
			encode_bit((a >> i) & 1);
	};

	for (int i = 0; i < H; ++i)
	{
		for (int j = 0; j < N; ++j)
		{
			encode_bit(yra[i][j]);
		}
	}
	// do stuff // send edges

	vii fast(H, vi(N, MOD));

	auto bfs = [&](int start, vi & dis) {
		dis = vi(N, MOD);
		dis[start] = 0;
		queue<int> q;
		q.push(start);
		while (q.size()) {
			int c = q.front(); q.pop();
			for (auto u : edges[c]) {
				if (dis[c] + 1 < dis[u]) {
					dis[u] = dis[c] + 1;
					q.push(u);
				}
			}
		}
	};

	// O(H*N)
	auto upd = [&](int prad) {
		for (int i = prad; i < H; ++i)
			bfs(i, fast[i]);
	};


	upd(0);

	set<pi> augmeting;

	auto add_edge = [&](int a, int b) {
		edges[a].emplace_back(b);
		edges[b].emplace_back(a);
		if (a > b) swap(a, b);
		augmeting.insert({a, b});
	};


	for (int i = 0; i < H; ++i)
	{
		queue<int> q;
		q.push(i);
		vb been(N, false);
		been[i] = true;

		while (q.size()) {
			int c = q.front(); q.pop();
			for (auto u : visos[c]) {
				if (fast[i][c] + 1 <= fast[i][u]) {
					if (fast[i][c] + 1 < fast[i][u]) add_edge(c, u);

					fast[i][u] = fast[i][c] + 1;
					if (!been[u])
						q.push(u);

					been[u] = true;
				}
			}
		}

		upd(i + 1);
	}

	augmeting.insert({1011, 1011});

	assert(augmeting.size() <= 1600);
	
	for (auto u : augmeting) {
		// printf("encodinau %d %d\n", u.x, u.y);
		encode(u.x);
		encode(u.y);
	}
	return;
}
#include <bits/stdc++.h>
#include "grader.h"
#include "decoder.h"
using namespace std;

typedef long long ll;
typedef long double ld;
typedef complex<ld> cd;

typedef pair<int, int> pi;
typedef pair<ll, ll> pl;
typedef pair<ld, ld> pd;

typedef vector<int> vi;
typedef vector<vi> vii;
typedef vector<ld> vd;
typedef vector<ll> vl;
typedef vector<vl> vll;
typedef vector<pi> vpi;
typedef vector<vpi> vpii;
typedef vector<pl> vpl;
typedef vector<cd> vcd;
typedef vector<pd> vpd;
typedef vector<bool> vb;
typedef vector<vb> vbb;
typedef std::string str;
typedef std::vector<str> vs;

#define x first
#define y second
#define debug(...) cout<<"["<<#__VA_ARGS__<<": "<<__VA_ARGS__<<"]\n"

const int MOD = 1000000007;
const ll INF = std::numeric_limits<ll>::max();
const int MX = 100101;
const ld PI = 3.14159265358979323846264338327950288419716939937510582097494L;

template<typename T>
pair<T, T> operator+(const pair<T, T> &a, const pair<T, T> &b) { return pair<T, T>(a.x + b.x, a.y + b.y); }
template<typename T>
pair<T, T> operator-(const pair<T, T> &a, const pair<T, T> &b) { return pair<T, T>(a.x - b.x, a.y - b.y); }
template<typename T>
T operator*(const pair<T, T> &a, const pair<T, T> &b) { return (a.x * b.x + a.y * b.y); }
template<typename T>
T operator^(const pair<T, T> &a, const pair<T, T> &b) { return (a.x * b.y - a.y * b.x); }

template<typename T>
void print(vector<T> vec, string name = "") {
	cout << name;
	for (auto u : vec)
		cout << u << ' ';
	cout << '\n';
}

void decode(int nv, int nh) {
	int N = nv;
	int H = nh;

	auto decode = [&]() -> int {
		int ret = 0;
		for (int i = 0; i < 10; ++i)
		{
			ret |= (decode_bit() << i);
		}
		// printf("decodinu %d\n", ret);
		return ret;
	};

	vii edges(N);

	for (int i = 0; i < H; ++i)
	{
		for (int j = 0; j < N; ++j)
		{
			if (decode_bit()) {
				edges[i].emplace_back(j);
				edges[j].emplace_back(i);
			}
		}
	}
	
	{

		int a = decode();
		int b = decode();
		while (a != 1011) {
			edges[a].emplace_back(b);
			edges[b].emplace_back(a);
			a = decode();
			b = decode();
		};
	}

	for (int i = 0; i < H; ++i)
	{
		vi dis(N, MOD);
		dis[i] = 0;
		queue<int> q;
		q.push(i);
		while (q.size()) {
			int c = q.front(); q.pop();
			for (auto u : edges[c]) {
				if (dis[c] + 1 < dis[u]) {
					dis[u] = dis[c] + 1;
					q.push(u);
				}
			}
		}

		for (int j = 0; j < N; ++j)
		{
			hops(i, j, dis[j]);
		}
	}
}
# Verdict Execution time Memory Grader output
1 Correct 375 ms 12272 KB Output is correct - 36020 call(s) of encode_bit()
2 Correct 10 ms 4432 KB Output is correct - 35 call(s) of encode_bit()
3 Runtime error 42 ms 2412 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Correct 10 ms 4560 KB Output is correct - 45 call(s) of encode_bit()
5 Runtime error 47 ms 2936 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 51 ms 3192 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Runtime error 73 ms 4476 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Runtime error 37 ms 2168 KB Execution killed with signal 11 (could be triggered by violating memory limits)
9 Correct 54 ms 5832 KB Output is correct - 61920 call(s) of encode_bit()
10 Correct 55 ms 5832 KB Output is correct - 62060 call(s) of encode_bit()
11 Runtime error 43 ms 2552 KB Execution killed with signal 11 (could be triggered by violating memory limits)
12 Correct 44 ms 5632 KB Output is correct - 55960 call(s) of encode_bit()
13 Runtime error 89 ms 4140 KB Execution killed with signal 11 (could be triggered by violating memory limits)
14 Runtime error 34 ms 2296 KB Execution killed with signal 11 (could be triggered by violating memory limits)
15 Runtime error 32 ms 2432 KB Execution killed with signal 11 (could be triggered by violating memory limits)
16 Runtime error 71 ms 3576 KB Execution killed with signal 11 (could be triggered by violating memory limits)
17 Runtime error 65 ms 3192 KB Execution killed with signal 11 (could be triggered by violating memory limits)
18 Runtime error 82 ms 4220 KB Execution killed with signal 11 (could be triggered by violating memory limits)
19 Runtime error 58 ms 3320 KB Execution killed with signal 11 (could be triggered by violating memory limits)
20 Runtime error 89 ms 4552 KB Execution killed with signal 11 (could be triggered by violating memory limits)
21 Runtime error 125 ms 4860 KB Execution killed with signal 11 (could be triggered by violating memory limits)
22 Runtime error 77 ms 4472 KB Execution killed with signal 11 (could be triggered by violating memory limits)
23 Runtime error 115 ms 5496 KB Execution killed with signal 11 (could be triggered by violating memory limits)
# Verdict Execution time Memory Grader output
1 Correct 375 ms 12272 KB Output is correct - 36020 call(s) of encode_bit()
2 Correct 10 ms 4432 KB Output is correct - 35 call(s) of encode_bit()
3 Runtime error 42 ms 2412 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Correct 10 ms 4560 KB Output is correct - 45 call(s) of encode_bit()
5 Runtime error 47 ms 2936 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 51 ms 3192 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Runtime error 73 ms 4476 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Runtime error 37 ms 2168 KB Execution killed with signal 11 (could be triggered by violating memory limits)
9 Correct 54 ms 5832 KB Output is correct - 61920 call(s) of encode_bit()
10 Correct 55 ms 5832 KB Output is correct - 62060 call(s) of encode_bit()
11 Runtime error 43 ms 2552 KB Execution killed with signal 11 (could be triggered by violating memory limits)
12 Correct 44 ms 5632 KB Output is correct - 55960 call(s) of encode_bit()
13 Runtime error 89 ms 4140 KB Execution killed with signal 11 (could be triggered by violating memory limits)
14 Runtime error 34 ms 2296 KB Execution killed with signal 11 (could be triggered by violating memory limits)
15 Runtime error 32 ms 2432 KB Execution killed with signal 11 (could be triggered by violating memory limits)
16 Runtime error 71 ms 3576 KB Execution killed with signal 11 (could be triggered by violating memory limits)
17 Runtime error 65 ms 3192 KB Execution killed with signal 11 (could be triggered by violating memory limits)
18 Runtime error 82 ms 4220 KB Execution killed with signal 11 (could be triggered by violating memory limits)
19 Runtime error 58 ms 3320 KB Execution killed with signal 11 (could be triggered by violating memory limits)
20 Runtime error 89 ms 4552 KB Execution killed with signal 11 (could be triggered by violating memory limits)
21 Runtime error 125 ms 4860 KB Execution killed with signal 11 (could be triggered by violating memory limits)
22 Runtime error 77 ms 4472 KB Execution killed with signal 11 (could be triggered by violating memory limits)
23 Runtime error 115 ms 5496 KB Execution killed with signal 11 (could be triggered by violating memory limits)
# Verdict Execution time Memory Grader output
1 Correct 375 ms 12272 KB Output is correct - 36020 call(s) of encode_bit()
2 Correct 10 ms 4432 KB Output is correct - 35 call(s) of encode_bit()
3 Runtime error 42 ms 2412 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Correct 10 ms 4560 KB Output is correct - 45 call(s) of encode_bit()
5 Runtime error 47 ms 2936 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 51 ms 3192 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Runtime error 73 ms 4476 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Runtime error 37 ms 2168 KB Execution killed with signal 11 (could be triggered by violating memory limits)
9 Correct 54 ms 5832 KB Output is correct - 61920 call(s) of encode_bit()
10 Correct 55 ms 5832 KB Output is correct - 62060 call(s) of encode_bit()
11 Runtime error 43 ms 2552 KB Execution killed with signal 11 (could be triggered by violating memory limits)
12 Correct 44 ms 5632 KB Output is correct - 55960 call(s) of encode_bit()
13 Runtime error 89 ms 4140 KB Execution killed with signal 11 (could be triggered by violating memory limits)
14 Runtime error 34 ms 2296 KB Execution killed with signal 11 (could be triggered by violating memory limits)
15 Runtime error 32 ms 2432 KB Execution killed with signal 11 (could be triggered by violating memory limits)
16 Runtime error 71 ms 3576 KB Execution killed with signal 11 (could be triggered by violating memory limits)
17 Runtime error 65 ms 3192 KB Execution killed with signal 11 (could be triggered by violating memory limits)
18 Runtime error 82 ms 4220 KB Execution killed with signal 11 (could be triggered by violating memory limits)
19 Runtime error 58 ms 3320 KB Execution killed with signal 11 (could be triggered by violating memory limits)
20 Runtime error 89 ms 4552 KB Execution killed with signal 11 (could be triggered by violating memory limits)
21 Runtime error 125 ms 4860 KB Execution killed with signal 11 (could be triggered by violating memory limits)
22 Runtime error 77 ms 4472 KB Execution killed with signal 11 (could be triggered by violating memory limits)
23 Runtime error 115 ms 5496 KB Execution killed with signal 11 (could be triggered by violating memory limits)
# Verdict Execution time Memory Grader output
1 Correct 375 ms 12272 KB Output is correct - 36020 call(s) of encode_bit()
2 Correct 10 ms 4432 KB Output is correct - 35 call(s) of encode_bit()
3 Runtime error 42 ms 2412 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Correct 10 ms 4560 KB Output is correct - 45 call(s) of encode_bit()
5 Runtime error 47 ms 2936 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 51 ms 3192 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Runtime error 73 ms 4476 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Runtime error 37 ms 2168 KB Execution killed with signal 11 (could be triggered by violating memory limits)
9 Correct 54 ms 5832 KB Output is correct - 61920 call(s) of encode_bit()
10 Correct 55 ms 5832 KB Output is correct - 62060 call(s) of encode_bit()
11 Runtime error 43 ms 2552 KB Execution killed with signal 11 (could be triggered by violating memory limits)
12 Correct 44 ms 5632 KB Output is correct - 55960 call(s) of encode_bit()
13 Runtime error 89 ms 4140 KB Execution killed with signal 11 (could be triggered by violating memory limits)
14 Runtime error 34 ms 2296 KB Execution killed with signal 11 (could be triggered by violating memory limits)
15 Runtime error 32 ms 2432 KB Execution killed with signal 11 (could be triggered by violating memory limits)
16 Runtime error 71 ms 3576 KB Execution killed with signal 11 (could be triggered by violating memory limits)
17 Runtime error 65 ms 3192 KB Execution killed with signal 11 (could be triggered by violating memory limits)
18 Runtime error 82 ms 4220 KB Execution killed with signal 11 (could be triggered by violating memory limits)
19 Runtime error 58 ms 3320 KB Execution killed with signal 11 (could be triggered by violating memory limits)
20 Runtime error 89 ms 4552 KB Execution killed with signal 11 (could be triggered by violating memory limits)
21 Runtime error 125 ms 4860 KB Execution killed with signal 11 (could be triggered by violating memory limits)
22 Runtime error 77 ms 4472 KB Execution killed with signal 11 (could be triggered by violating memory limits)
23 Runtime error 115 ms 5496 KB Execution killed with signal 11 (could be triggered by violating memory limits)