제출 #316708

#제출 시각아이디문제언어결과실행 시간메모리
316708amunduzbaevVision Program (IOI19_vision)C++14
100 / 100
14 ms1920 KiB
//#include "grader.cpp"
#include "vision.h"
#include <bits/stdc++.h>
#define pb(a) push_back(a)
using namespace std;
const int N = 405;
int h, w;
vector <vector<int>> d1(N),d2(N);

int pf1[N], pf2[N], di1[N], di2[N];
void construct_network(int H, int W, int k) {

	h=H, w=W;
	for(int i=0;i<h;i++){
		for(int j=0;j<w;j++){
			d1[i+j].pb(i*w+j);
			d2[i-j+w-1].pb(i*w+j);
		}
	}
	vector<int>ans1, ans2;
	for(int i = 0 ; i < h+w -1; i++){
        di1[i] = add_or(d1[i]);
        di2[i] = add_or(d2[i]);
        if(i){
            pf1[i] = add_or({pf1[i-1], di1[i]});
            pf2[i] = add_or({pf2[i-1], di2[i]});
        }
        else{
            pf1[i] = add_or({di1[i]});
            pf2[i] = add_or({di2[i]});
        }
        if(i>=k){
            ans1.pb( add_and({ di1[i], pf1[i - k]}));
            ans1.pb( add_and({ di2[i], pf2[i - k]}));
        }
        if(i>=k+1){
            ans2.pb( add_and({ di1[i], pf1[i - k - 1]}));
            ans2.pb( add_and({ di2[i], pf2[i - k - 1]}));
        }
 
    }
	if(ans2.size()!=0)
		add_xor({add_or(ans1), add_or(ans2)});
	else 
		add_or(ans1);
	return;
}

#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...