Submission #581853

#TimeUsernameProblemLanguageResultExecution timeMemory
581853Mr_HusanboyVision Program (IOI19_vision)C++14
100 / 100
16 ms1736 KiB
#include "vision.h"
#include<bits/stdc++.h>

using namespace std;

int dist(int i, int j, int a, int b){
    return abs(i-a)+abs(j-b);
}

void construct_network(int n, int m, int d) {
	vector<int> ones;
	vector<int> v;
	for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            v.push_back(i*m+j);
        }
        ones.push_back(add_xor(v));
        v.clear(); v.push_back(ones.back());
	}v.clear();
	for(int i=0;i<m;i++){
        for(int j=0;j<n;j++){
            v.push_back(j*m+i);
        }
        ones.push_back(add_xor(v));
        v.clear(); v.push_back(ones.back());
	}
	int sz=ones.size(); int LOG=0;
	while(sz){
        sz/=2; LOG++;
	}
	vector<int> num(LOG);
	for(int i=0;i<LOG;i++){
        num[i]=add_xor(ones);
        if(!(d&(1<<i))) num[i]=add_not(num[i]);
        int last=ones.back();
        vector<int> temp;
        for(auto i:ones){
            temp.push_back(add_and({last,i}));
            last=add_xor({last,i});
        }
        ones=temp;
	}
    add_and(num);
    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...