제출 #422140

#제출 시각아이디문제언어결과실행 시간메모리
422140pliamVision Program (IOI19_vision)C++14
8 / 100
1 ms308 KiB
#include "vision.h"
#include <bits/stdc++.h>
using namespace std;
#define MAXH 205
#define MAXW 205

int h,w,k;
set<pair<int,int>> used;
vector<int> diag;
vector<int> answers;

int id(int x,int y){//x in 0..h-1, y in 0..w-1
	return x*w+y;
}

bool inbounds(int x,int y){
	return 0<=x&&x<h&&0<=y&&y<w;
}

void ins(int x,int y,int dx,int dy){
	int x_=x+dx;
	int y_=y+dy;
	if(inbounds(x_,y_)&&!used.count({id(x,y),id(x_,y_)})){
		diag.push_back(id(x_,y_));
		used.insert({id(x,y),id(x_,y_)});
		used.insert({id(x_,y_),id(x,y)});
	}
}

void construct_network(int H, int W, int K) {
	h=H;
	w=W;
	k=K;
	used.clear();
	answers.clear();
	int x,y;
	x=y=0;
			diag.clear();
			for(int i=1;i<k;i++){
				ins(x,y,i,k-i);
				ins(x,y,-i,k-i);
				ins(x,y,i,-k+i);
				ins(x,y,-i,-k+i);
			}
			ins(x,y,0,k);
			ins(x,y,0,-k);
			ins(x,y,k,0);
			ins(x,y,-k,0);
				int ans_or=add_or(diag);
			    add_and({id(x,y),ans_or});
}
#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...