Submission #1239020

#TimeUsernameProblemLanguageResultExecution timeMemory
1239020dostsVision Program (IOI19_vision)C++20
44 / 100
30 ms5960 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;
int H,W;

int pixel(int x,int y) {
	return x*W+y;
};

int test(int K) {
	map<int,vi> dia,ldia;
	for (int i = 0;i<H;i++) {
		for (int j = 0;j<W;j++) {
			dia[i+j].push_back(pixel(i,j));
			ldia[j-i].push_back(pixel(i,j));
		}
	}

	vi imp;
	for (auto it : dia) {
		vi toor;
		for (auto it2 : dia) {
			if (abs(it.ff-it2.ff) >= K) {
				for (auto it : dia[it2.ff]) toor.push_back(it);
			}
		}
		if (big(toor)) imp.push_back(add_and({add_or(dia[it.ff]),add_or(toor)}));
	}
	for (auto it : ldia) {
		vi toor;
		for (auto it2 : ldia) {
			if (abs(it.ff-it2.ff) >= K) {
				for (auto it : ldia[it2.ff]) toor.push_back(it);		
			}
		}
		if (big(toor)) imp.push_back(add_and({add_or(ldia[it.ff]),add_or(toor)}));
	}
	if (big(imp)) return add_or(imp);
	else return -1;
}

void construct_network(int H_, int W_, int K) {
	H = H_,W = W_;
	int lmao1 = test(K);
	int lmao2 = test(K+1);
	if (lmao2 == -1) add_and({lmao1});
	else add_and({test(K),add_not(test(K+1))});
}
#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...