Submission #1337637

#TimeUsernameProblemLanguageResultExecution timeMemory
1337637enzyVision Program (IOI19_vision)C++20
0 / 100
1 ms1092 KiB
#include "vision.h"
#include<bits/stdc++.h>
#define pii pair<int,int>
#define fi first
#define se second
using namespace std;

void construct_network(int H, int W, int K){
	cerr << H << ' ' << W << ' ' << K << '\n';
	vector<int>vdiagr[H+W], vdiagl[H+W], diagr(H+W), diagl(H+W);
	for(int i=0;i<H;i++){
		for(int j=0;j<W;j++){
			int atr=i+j, atl=i-j+(W-1);
			vdiagr[atr].push_back({i*W+j});
			vdiagl[atl].push_back({i*W+j});
		}
	}

	// cerr << H+W << '\n';

	for(int i=0;i<H+W-1;i++){
		// cerr << "! " << i << '\n';
		diagr[i]=add_or(vdiagr[i]);
		diagl[i]=add_or(vdiagl[i]);
		// cerr << "!!!\n";
	}

	auto get=[&](vector<int> x){
		int a=add_or(x), b=add_xor(x);
		return add_xor({a,b});
	};

	vector<int>and_dps, or_dps;

	for(int i=0;i+K<H+W-1;i++){
		vector<int>atl, atr;
		for(int j=i;j<=i+K;j++) atl.push_back(diagl[j]), atr.push_back(diagr[j]);
		// cerr << "? " << i << '\n';
		and_dps.push_back(get(atl)); and_dps.push_back(get(atr));
		or_dps.push_back(get({atl[i],atl[i+K]})); or_dps.push_back(get({atr[i],atr[i+K]}));
	}

	int x=add_and(and_dps), y=add_or(or_dps);
	int last=add_and({x,y});
}
#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...