제출 #1327548

#제출 시각아이디문제언어결과실행 시간메모리
1327548nicolo_010Vision Program (IOI19_vision)C++20
44 / 100
82 ms3296 KiB
#include "vision.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
int dis(int i1, int j1, int i2, int j2) {
	return abs(i1-i2) + abs(j1-j2);
}

void construct_network(int H, int W, int k) {
	int S = H*W;
	vector<vector<int>> grid(H, vector<int>(W, -1));
	for (int i=0; i<H; i++) {
		for (int j=0; j<W; j++) {
			int id = i*W+j;
			vector<int> Ns;
			//cout << i << " " << j << ": " << endl;
			for (int i1=0; i1<H; i1++) {
				for (int j1=0; j1<W; j1++) {
					if (dis(i, j, i1, j1) == k) {
						int id1 = i1*W + j1;
						Ns.push_back(id1);
						//cout << i1 << " " << j1 << endl;
					}
				}
			}
			if (Ns.size() == 0) continue;
			Ns.push_back(id);
			grid[i][j] = S;
			add_xor(Ns);
			add_not(S);
			Ns.pop_back();
			add_xor(Ns);
			S += 3;
		}
	}
	vector<int> res;
	int beg = S;
	for (int i=0; i<H; i++) {
		for (int j=0; j<W; j++) {
			if (grid[i][j] == -1) continue;
			vector<int> Ns = {grid[i][j]+1, grid[i][j]+2};
			add_and(Ns);
			S++;
		}
	}
	for (int i=beg; i<S; i++) {
		res.push_back(i);
	}
	add_or(res);
}
#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...