제출 #1287370

#제출 시각아이디문제언어결과실행 시간메모리
1287370Jawad_Akbar_JJVision Program (IOI19_vision)C++20
100 / 100
12 ms2424 KiB
#include <iostream>
#include <vector>
#include "vision.h"

using namespace std;
vector<int> vc3;

vector<int> get1(int n, int m, int i, int j){
	vector<int> ans;
	while (i < n and j >= 0){
		ans.push_back(i * m + j);
		i++, j--;
	}
	return ans;
}

vector<int> get2(int n, int m, int i, int j){
	vector<int> ans;
	while (i < n and j < m){
		ans.push_back(i * m + j);
		i++, j++;
	}
	return ans;
}

int solve1(int n, int m, int k){
	vector<int> vc, vc2;
	for (int j=0;j<m;j++){
		// cout<<"type1 "<<0<<" "<<j<<' ';
		vc.push_back(add_or(get1(n, m, 0, j)));
	}
	for (int i=1;i<n;i++){
		// cout<<"type1 "<<i<<" "<<m - 1<<' ';
		vc.push_back(add_or(get1(n, m, i, m-1)));
	}

	for (int i=k, ind;i<vc.size();i++){
		// cout<<"type11 "<<i-k<<" "<<i<<" ";
		vc2.push_back(add_and({vc[i], vc[i - k]}));
		if (i == k)
			ind = vc[0];
		else{
			vc3.push_back(add_and({ind, vc[i]}));
			ind = add_or({ind, vc[i - k]});
		}
	}
	// cout<<"type1 last ";
	return add_or(vc2);
}

int solve2(int n, int m, int k){
	// cout<<"/////////////////////////////////"<<endl;
	vector<int> vc, vc2;
	for (int i=n-1;i>0;i--){
		// cout<<"type2 "<<i<<" "<<0<<' ';
		vc.push_back(add_or(get2(n, m, i, 0)));
	}

	for (int j=0;j<m;j++){
		// cout<<"type2 "<<0<<" "<<j<<' ';
		vc.push_back(add_or(get2(n, m, 0, j)));
	}

	for (int i=k, ind;i<vc.size();i++){
		// cout<<"type2 "<<i-k<<" "<<i<<" ";
		vc2.push_back(add_and({vc[i], vc[i - k]}));

		if (i == k)
			ind = vc[0];
		else{
			vc3.push_back(add_and({ind, vc[i]}));
			ind = add_or({ind, vc[i - k]});
		}
	}

	// cout<<"type2 last ";
	return add_or(vc2);
}

void construct_network(int n, int m, int k){
	int frst = solve1(n, m, k);
	int scnd = solve2(n, m, k);

	// cout<<"final Answer ";
	int a = add_or({frst, scnd});
	if (vc3.size() == 0)
		return;
	int b = add_or(vc3);
	add_and({a, add_not(b)});
}

#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...