제출 #1167301

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


void construct_network( int n, int m, int k ){

	auto id = [&]( int i, int j ){ return i*m + j; };

	vector<int> c, d;
	int a, b;

	vector<int> diag1, diag2;
	for( int x = 0; x < n + m - 1; x++ ){
		vector<int> v;
		for( int i = 0; i < n; i++ ) for( int j = 0; j < m; j++ ) if( i + j == x ) v.push_back(id(i, j));
		diag1.push_back(add_or(v));

	}
	// for( int x = 1 - m; x < n; x++ ){
	// 	vector<int> v;
	// 	for( int i = 0; i < n; i++ ) for( int j = 0; j < m; j++ ) if( i - j == x ) v.push_back(id(i, j));
	// 	diag2.push_back(add_or(v));
	// }

	for( int dist = k; dist <= k; dist++ ){
		vector<int> v;
		for( int i = 0; i + dist < n + m - 1; i++ ){
			vector<int> aux = {diag1[i], diag1[i + dist]};
			if( dist < k ) c.push_back(add_and(aux));
			else v.push_back(add_and(aux));
		}
		if( dist == k ) a = add_xor(v);

		// v.clear();
		// for( int i = 0; i + dist < n + m - 1; i++ ){
		// 	vector<int> aux = {diag2[i], diag2[i + dist] };
		// 	if( dist < k ) d.push_back(add_and(aux));
		// 	else v.push_back(add_and(aux));
		// }
		// if( dist == k ) b = add_xor(v);
	}
	// int C = add_xor(c);
	// int D = add_xor(d);
	// vector<int> aux = {a, D};
	// int e = add_and(aux);
	// aux = {b, C};
	// int f = add_and(aux);
	// aux = {a, b};
	// int g = add_and(aux);
	//
	// aux = { e, f, g };
	// add_or(aux);
}
#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...