제출 #1238085

#제출 시각아이디문제언어결과실행 시간메모리
1238085dostsVision Program (IOI19_vision)C++20
33 / 100
1 ms960 KiB
#include "vision.h"
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2")
//#define int long long
#define pii pair<int,int>
#define vi vector<int>
#define ff first
#define ss second
#define sp << " " <<
#define all(x) x.begin(),x.end()
#define big(x) ((int)(x.size()))
using namespace std;
const int MOD = 1e9+7, LIM = 1e6+1, inf = 2e9;

void construct_network(int H, int W, int K) {
	auto pixel = [&](int x,int y) {
		return x*W+y;
	};
	int ctr= H*W-1;
	if (W <= H) {
		for (int i = 0;i<H;i++) {
			for (int j = 0;j<W;j++) {
				for (int dx = 0;dx+j < W;dx++) {
					int dy = K-abs(dx);
					if (dy < 0) continue;
					if (dy <= i  && i-dy < H) {
						add_and({pixel(i,j),pixel(i-dy,j+dx)});
						++ctr;
					}
					if (i+dy < H && i+dy >= 0) {
						add_and({pixel(i,j),pixel(i+dy,j+dx)});
						++ctr;
					}
				}
			}
		}
	}
	else {
		for (int i = 0;i<H;i++) {
			for (int j = 0;j<W;j++) {
				for (int dy = 0;dy+i < H;dy++) {
					int dx = K-abs(dy);
					if (dx < 0) continue;
					if (j-dx < W && j-dx >= 0) {
						//(i-dy,j+dx)
						add_and({pixel(i,j),pixel(i+dy,j-dx)});
						++ctr;
					}
					if (dx+j < W && j+dx >= 0) {
						//(i+dy,j+dx)
						add_and({pixel(i,j),pixel(i+dy,j+dx)});
						++ctr;
					}
				}
			}
		}	
	}
	for (int j = H*W;j<=ctr;j++) {
		add_or({j,ctr+(j-H*W)});
	}
}
#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...