제출 #286778

#제출 시각아이디문제언어결과실행 시간메모리
286778CaroLindaVision Program (IOI19_vision)C++14
26 / 100
12 ms1280 KiB
#include <bits/stdc++.h>
#include "vision.h"

#define lp(i,a,b) for(int i = a; i < b ; i++)
#define ff first
#define ss second
#define pb push_back
#define ll long long
#define mk make_pair
#define sz(x) (int)(x.size())
#define pii pair<int,int>
#define mkt make_tuple
#define debug printf

using namespace std ;

int N, M ;
vector<int> v1 , v2 , aux ;

int code(int i, int j) { return i * M + j ; }
bool valid(int x, int y) { return 0 <= min(x,y) && x < N && y < M ; }

int test(vector<int> &v , int K )
{

	vector<int> glob ;
	for(int i = 0 ; i+1 < sz(v) ; i++ )
	{
		aux.clear() ;
		for(int j = i+1 ; j <= min(K+i , sz(v)-1) ; j++ ) aux.pb( v[j] ) ;
		int z = add_or(aux) ;
		aux.clear() ;
 		aux.pb( z ) ;
		aux.pb( v[i] ) ;
		glob.pb( add_and(aux) ) ;
	}

	return add_or(glob) ;

}

void construct_network(int H, int W, int K) 
{
	N = H ;
	M = W ;

	for(int i = 0 ; i < H-1 ; i++ )
	{
		int x = i , y = 0 ;
		aux.clear() ;

		while( valid(x,y) )
		{
			aux.pb( code(x,y) ) ;
			x-- ;
			y++ ;
		}

		v1.pb( add_xor(aux) ) ;

		x = i , y = W-1 ;
		aux.clear() ;

		while( valid(x,y) )
		{
			aux.pb( code(x,y) ) ;
			x-- ;
			y-- ;
		}

		v2.pb(add_xor( aux ) ) ;

	}

	for(int j = 0 , jj = W-1 ; j < W ; j++, jj-- )
	{
		int x = H-1 , y = jj ;
		aux.clear() ;

		while(valid(x,y))
		{
			aux.pb( code(x,y) ) ;
			x-- ;
			y-- ;
		}


		v2.pb( add_xor(aux) ) ;

		aux.clear() ;
		x = H-1 , y = j ;

		while(valid(x,y))
		{
			aux.pb(code(x,y) ) ;
			x-- ;
			y++ ;
		}

		v1.pb( add_xor(aux) ) ;

	}

	vector<int> auxaux ;
	auxaux.pb( test(v1 , K ) ) ;
	auxaux.pb( test(v2, K ) ) ;

	int z1 = add_and(auxaux) ;

	if(K == 1) return ;

	auxaux.clear() ;
	auxaux.pb( test(v1, K-1 ) ) ;
	auxaux.pb( test(v2, K-1 ) ) ;

	int z2 = add_and( auxaux ) ;
	z2 = add_not(z2) ;

	aux.clear() ;
	aux.pb( z1 ) ;
	aux.pb(z2) ;

	add_and(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...