Submission #226562

#TimeUsernameProblemLanguageResultExecution timeMemory
226562staniewzkiVision Program (IOI19_vision)C++17
100 / 100
74 ms7028 KiB
#include<bits/stdc++.h>
using namespace std;
 
#define REP(i, n) for(int i = 0; i < n; i++)

#include "vision.h"

void construct_network(int H, int W, int K) {
	auto construct = [&](int k, auto get_id) {
		int s = H + W - 1;
		vector<int> a(s), b(s);
		REP(i, s) {
			int x = min(i, H - 1);
			int y = i - x;
			vector<int> diag;
			for(; x >= 0 && y < W; x--, y++)
				diag.emplace_back(get_id(x, y));				
			a[i] = add_or(diag);
			b[i] = add_xor(diag);
		}
		vector<int> r;
		REP(i, s - k) {
			vector<int> p, q;
			REP(j, k + 1) {
				p.emplace_back(a[i + j]);
				q.emplace_back(b[i + j]);
			}
			int x = add_xor({add_or(p), add_xor(q)});
			r.emplace_back(x);
		}
		return add_or(r);
	};

	auto check = [&](int k) {
		int a = construct(k, [&](int x, int y) { return x * W + y; });
		int b = construct(k, [&](int x, int y) { return x * W + W - 1 - y; });
		return add_and({a, b});
	};

	add_xor({check(K), check(K - 1)});
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...