Submission #722319

#TimeUsernameProblemLanguageResultExecution timeMemory
722319FatihSolakVision Program (IOI19_vision)C++17
100 / 100
85 ms5636 KiB
#include "vision.h"
#include <bits/stdc++.h>
using namespace std;
int pos1 = -1,pos0 = -1;
int calc(int n,int m,int k,int coef){
	vector<int> cands;
	map<int,vector<int>> mp;
	for(int i = 0;i<n;i++){
		for(int j = 0;j<m;j++){
			mp[i+coef*j].push_back(i * m + j);
		}
	}
	map<int,int> idx;
	for(auto u:mp){
		idx[u.first] = add_or(u.second);
	}
	for(auto u:mp){
		vector<int> pos;
		for(auto c:mp){
			if(u.first + k < c.first){
				pos.push_back(idx[c.first]);
			}
		}
		if(pos.empty())continue;
		cands.push_back(add_and({idx[u.first],add_or(pos)}));
	}
	if(cands.empty()){
		return pos1;
	}	
	return add_not(add_or(cands));
}
int get(int n,int m,int k){
	return add_and({calc(n,m,k,1),calc(n,m,k,-1)});
}
void construct_network(int H, int W, int K) {
	pos1 = add_or({0,add_not(0)});
	pos0 = add_not(pos1);
	add_and({get(H,W,K),add_not(get(H,W,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...