Submission #298170

#TimeUsernameProblemLanguageResultExecution timeMemory
298170amoo_safarVision Program (IOI19_vision)C++17
100 / 100
24 ms2248 KiB
#include "vision.h"

#include <bits/stdc++.h>

#define F first
#define S second
#define pb push_back
#define all(x) x.begin(), x.end()

using namespace std;

const int Log = 9;

int v1;
int num[Log];

void Add(int car){
	int tmp;
	for(int i = 0; i < Log; i++){
		tmp = num[i];
		num[i] = add_xor({tmp, car});
		car = add_and({tmp, car});
	}
}

void construct_network(int H, int W, int K) {
	vector<int> Ns(H * W);
	iota(all(Ns), 0);
	v1 = add_or(Ns);
	for(int i = 0; i < Log; i++){
		num[i] = add_not(v1);
	}

	vector<int> V;
	int nw = add_not(v1);
	for(int i = 0; i < H; i++){
		V.clear();
		for(int j = 0; j < W; j++)
			V.pb((i * W) + j);
		V.pb(nw);
		nw = add_xor(V);
		Add(nw);
	}
	nw = add_not(v1);
	for(int i = 0; i < W; i++){
		V.clear();
		for(int j = 0; j < H; j++)
			V.pb((j * W) + i);
		V.pb(nw);
		nw = add_xor(V);
		Add(nw);
	}

	vector<int> fin;
	for(int i = 0; i < Log; i++){
		if(K >> i & 1)
			fin.pb(add_not(add_not(num[i])));
		else
			fin.pb(add_not(num[i]));
	}
	add_and(fin);
	return ;
}
#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...