제출 #892809

#제출 시각아이디문제언어결과실행 시간메모리
892809Faisal_SaqibVision Program (IOI19_vision)C++17
12 / 100
2 ms2260 KiB
#include <vector>
#include <string>
using namespace std;

int add_and(std::vector<int> Ns);

int add_or(std::vector<int> Ns);

int add_xor(std::vector<int> Ns);

int add_not(int N);
bool vis[202][202];
int k,h,w;
int f(int i,int j)
{
	return (i*w)+j;
}
vector<int> val;
void dfs(int i,int j)
{
	// cout<<"At "<<i<<' '<<j<<endl;
	vis[i][j]=1;
	for(int fp=-k;fp<=k;fp++)
	{
		int rem=k-abs(fp);
		if(0<=(i+fp) and (i+fp)<h and 0<=(j+rem) and (j+rem)<w and !vis[i+fp][j+rem])
		{
			val.push_back(add_and({f(i,j),f(i+fp,j+rem)}));
			dfs(i+fp,j+rem);
		}
		rem*=-1;
		if(0<=(i+fp) and (i+fp)<h and 0<=(j+rem) and (j+rem)<w and !vis[i+fp][j+rem])
		{
			val.push_back(add_and({f(i,j),f(i+fp,j+rem)}));
			dfs(i+fp,j+rem);
		}
	}
}
void construct_network(int H, int W, int K)
{
	k=K;
	h=H;
	w=W;
	for(int i=0;i<H;i++)
	{
		for(int j=0;j<W;j++)
		{
			if(!vis[i][j])
			{
				dfs(i,j);
			}
		}
	}
	add_or(val);
}
#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...