제출 #392323

#제출 시각아이디문제언어결과실행 시간메모리
392323AntekbVision Program (IOI19_vision)C++14
100 / 100
18 ms1808 KiB
#include "vision.h"
using namespace std;
#define pb(x) push_back(x)

vector<int> V;
int n, tru;
int L=10;
void add(int k){
	int p=k;
	for(int i=0;i<L; i++){
		int q=p;
		q=add_and({q, V[i]});
		V[i]=add_xor({p, V[i]});
		p=q;
	}
}
void construct_network(int H, int W, int K) {
	vector<int> Ns;
	n=add_xor({0, 0});
	tru=add_not(n);
	V.resize(L, n);
	int col[H], row[W];
	for(int i=0; i<H; i++){
		Ns.clear();
		for(int j=0; j<W; j++){
			Ns.pb(i*W+j);
		}
		col[i]=add_xor(Ns);
	}
	int pref[H+1], suf[H+1];
	pref[0]=n;
	for(int i=0; i<H; i++){
		pref[i+1]=add_xor({pref[i], col[i]});
	}
	suf[H]=n;
	for(int i=H-1; i>=0; i--){
		suf[i]=add_xor({suf[i+1], col[i]});
	}
	for(int i=0; i<=H; i++){
		int k=add_and({pref[i], suf[i]});
		add(k);
	}
	for(int j=0; j<W; j++){
		Ns.clear();
		for(int i=0; i<H; i++){
			Ns.pb(i*W+j);
		}
		row[j]=add_xor(Ns);
	}
	int pref2[W+1], suf2[W+1];
	pref2[0]=n;
	for(int i=0; i<W; i++){
		pref2[i+1]=add_xor({pref2[i], row[i]});
	}
	suf2[W]=n;
	for(int i=W-1; i>=0; i--){
		suf2[i]=add_xor({suf2[i+1], row[i]});
		//cerr<<i<<"\n";
	}
	for(int i=0; i<=W; i++){
		int k=add_and({pref2[i], suf2[i]});
		add(k);
	}
	Ns.clear();
	for(int i=0; i<L; i++){
		if(K&(1<<i))Ns.pb(V[i]);
		else Ns.pb(add_not(V[i]));
	}
	add_and(Ns);
}
#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...