제출 #723732

#제출 시각아이디문제언어결과실행 시간메모리
723732alvingogoVision Program (IOI19_vision)C++14
100 / 100
13 ms1760 KiB
#include "vision.h"
#include <bits/stdc++.h>
using namespace std;

void construct_network(int n, int m, int k) {
	vector<vector<int> > t1(n+m-1),t2(n+m-1);
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			t1[i+j].push_back(i*m+j);
			t2[i-j+m-1].push_back(i*m+j);
		}
	}
	vector<int> o1(n+m-1),o2(n+m-1);
	for(int i=0;i<n+m-1;i++){
		o1[i]=add_or(t1[i]);
		o2[i]=add_or(t2[i]);
	}
	vector<int> z;
	for(int i=0;i+k<n+m-1;i++){
		vector<int> gg={o1[i],o1[i+k]};
		z.push_back(add_and(gg));
		gg={o2[i],o2[i+k]};
		z.push_back(add_and(gg));
	}
	vector<int> ans;
	ans.push_back(add_or(z));
	int l=0;
	int tt=-1,ff=-1;
	vector<int> p;
	for(int i=0;i<n+m-1;i++){
		while(i-l>k){
			if(tt==-1){
				tt=add_or({o1[l]});
			}
			else{
				tt=add_or({tt,o1[l]});
			}
			if(ff==-1){
				ff=add_or({o2[l]});
			}
			else{
				ff=add_or({ff,o2[l]});
			}
			l++;
		}
		if(tt!=-1){
			p.push_back(add_and({o1[i],tt}));
			p.push_back(add_and({o2[i],ff}));
		}
	}
	if(p.size()){
		int g=add_or(p);
		ans.push_back(add_not(g));
	}
	add_and(ans);
}
#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...