Submission #1221254

#TimeUsernameProblemLanguageResultExecution timeMemory
1221254boclobanchatVision Program (IOI19_vision)C++20
0 / 100
67 ms1352 KiB
#include"vision.h"
#include<bits/stdc++.h>
using namespace std;
void construct_network(int H,int W,int K)
{
	vector<int> vv1,vv2,w;
	for(int i=0;i<H+W-1;i++)
	{
		vector<int> vi;
		for(int j=0;j<H*W;j++) if(j/W+j%W==i) vi.push_back(j);
		vv1.push_back(add_or(vi));
	}
	for(int i=0;i<H+W-1;i++)
	{
		vector<int> vi;
		for(int j=0;j<H*W;j++) if(j/W+W-1-j%W==i) vi.push_back(j);
		vv2.push_back(add_or(vi));
	}
	for(int i=K;i<vv1.size();i++)
	{
		w.push_back(add_and({vv1[i],vv1[i-K]}));
		w.push_back(add_and({vv2[i],vv2[i-K]}));
	}
	int res=add_or(w);
	K--;
	vector<int> ww1,ww2;
	for(int i=0;i<vv1.size();i++) ww1.push_back(add_and({vv1[i]}));
	for(int i=0;i<vv2.size();i++) ww2.push_back(add_and({vv2[i]}));
	for(int i=0;K-(1<<i)>=0;i++)
	{
		vector<int> tam;
		for(int j=0;j+(1<<i)<ww1.size();j++) tam.push_back(add_or({ww1[j],ww1[j+(1<<i)]}));
		ww1=tam,tam.clear();
		for(int j=0;j+(1<<i)<ww2.size();j++) tam.push_back(add_or({ww2[j],ww2[j+(1<<i)]}));
		ww2=tam,K-=(1<<i);
	}
	vector<int> tam;
	for(int j=0;j+K<ww1.size();j++) tam.push_back(add_or({ww1[j],ww1[j+K]}));
	ww1=tam,tam.clear();
	for(int j=0;j+K<ww2.size();j++) tam.push_back(add_or({ww2[j],ww2[j+K]}));
	ww2=tam,w.clear();
	for(int j=K;j<vv1.size();j++) w.push_back(add_and({vv1[j],ww1[j-K]}));
	for(int j=K;j<vv2.size();j++) w.push_back(add_and({vv2[j],ww2[j-K]}));
	int res2=add_or(w);
	add_and({res,res2});
}
#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...