제출 #1216589

#제출 시각아이디문제언어결과실행 시간메모리
1216589brintonVision Program (IOI19_vision)C++20
14 / 100
6 ms1096 KiB
#include <bits/stdc++.h>
#include "vision.h"

using namespace std;
void construct_network(int H, int W, int K) {

	auto id = [&](int i,int j){
		return i*W+j;
	};
	auto dist = [](int i1,int i2,int j1,int j2){
		return abs(i1-i2)+abs(j1-j2);
	};
	vector<int> row;
	vector<int> col;
	for(int i = 0;i < H;i++){
		vector<int> cur;
		for(int j = 0;j < W;j++){
			cur.push_back(id(i,j));
		}
		row.push_back(add_or(cur));
	}
	for(int j = 0;j < W;j++){
		vector<int> cur;
		for(int i = 0;i < H;i++){
			cur.push_back(id(i,j));
		}
		col.push_back(add_or(cur));
	}
	int sameRow = add_xor(row);
	int sameCol = add_xor(col);
	
	vector<int> nearRow;
	for(int i = 0;i+1 < row.size();i++){
		nearRow.push_back(add_and({row[i],row[i+1]}));
	}
	vector<int> nearCol;
	for(int i = 0;i+1 < col.size();i++){
		nearCol.push_back(add_and({col[i],col[i+1]}));
	}
	if(nearRow.empty()){// row len 1
		int nearByCol = add_or(nearCol);
		return;
	}else if(nearCol.empty()){// col len 1
		int nearByRow = add_or(nearRow);
		return;
	}
	int nearByRow = add_or(nearRow);
	int nearByCol = add_or(nearCol);

	int a = add_and({sameRow,nearByCol});
	int b = add_and({sameCol,nearByRow});
	add_or({a,b});
}
#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...