Submission #1071540

#TimeUsernameProblemLanguageResultExecution timeMemory
1071540pccVision Program (IOI19_vision)C++17
0 / 100
5 ms1584 KiB
#include "vision.h"
#include <bits/stdc++.h>
using namespace std;

#define pii pair<int,int>
#define fs first
#define sc second

const int mxn = 404;
const int sh = mxn>>1;

int H,W,K;

int encode(int r,int c){
	return r*W+c;
}
pii decode(int k){
	return pii(k/W,k%W);
}

vector<int> v[mxn];
int arr[mxn];

void construct_network(int HH, int WW, int KK) {
	H = HH,W = WW,K = KK;
	int zero = add_xor({0,0});
	int ans = zero;
	for(int i = 0;i<H;i++){
		for(int j = 0;j<W;j++){
			v[i+j].push_back(encode(i,j));
		}
	}
	for(int i = 0;i<mxn;i++){
		if(!v[i].empty()){
			arr[i] = add_or(v[i]);
		}
	}
	for(int i = 0;i<H+W;i++){
		if(v[i+K].empty()||v[i].empty())continue;
		ans = add_or({ans,add_and({arr[i],arr[i+K]})});
	}
	for(auto &i:v)i.clear();
	for(int i = 0;i<H;i++){
		for(int j = 0;j<W;j++){
			v[sh+i-j].push_back(encode(i,j));
		}
	}
	for(int i = 0;i<mxn;i++){
		if(!v[i].empty())arr[i] = add_or(v[i]);
	}
	for(int i = 0;i<mxn;i++){
		if(v[i].empty()||v[i+K].empty())continue;
		ans = add_or({ans,add_and({arr[i],arr[i+K]})});
	}
	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...