This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "vision.h"
#include<iostream>
#include<vector>
using namespace std;
#define forn(i, n) for(int i=0; i<(int)n; ++i)
#define forsn(i, s, n) for(int i=s; i<(int)n; ++i)
#define PB push_back
int tc, fc; // cuidado con 2x1
int myand(vector<int> vec){
vec.PB(tc);
return add_and(vec);
}
int myor(vector<int> vec){
vec.PB(fc);
return add_or(vec);
}
int myxor(vector<int> vec){
vec.PB(fc);
return add_xor(vec);
}
// chequear si no se rompe cuando n es 1
vector<int> solve(int offset, int n){
int lg = 8*sizeof(int) - __builtin_clz(n);
vector<int> notMul(n+1);
forsn(i, 2, n) {
vector<int> def;
forn(j, lg) {
vector<int> ask;
forn(k, n) if((k%i)&(1<<j)) ask.PB(offset + k);
def.PB(myxor(ask));
}
notMul[i]=myor(def);
}
vector<int> exact(n);
vector<int> edge;
forn(i, n) edge.PB(offset + i);
int xx = myor(edge);
exact[0] = add_not(xx);
edge.clear();
forsn(i, 2, n) edge.PB(notMul[i]);
edge.PB(xx);
exact[1]=myand(edge);
forsn(i, 2, n){
vector<int> mul;
for(int j=2*i; j<n; j+=i) mul.PB(notMul[j]);
int x = myand(mul);
int y = add_not(notMul[i]);
exact[i] = myand({x, y, xx});
}
return exact;
}
void construct_network(int H, int W, int K) {
forn(i, H){
vector<int> ask;
forn(j, W) ask.PB(i*W + j);
add_xor(ask);
}
forn(j, W){
vector<int> ask;
forn(i, H) ask.PB(i*W + j);
add_xor(ask);
}
vector<int> al;
forn(i, H*W) al.PB(i);
tc = add_or(al);
fc = add_not(tc);
vector<int> sh = solve(H*W, H);
vector<int> sv = solve(H*(W+1), W);
vector<int> fin;
forn(i, K+1) if((i<(int)sh.size()) && (K-i<(int)sv.size())){
fin.PB(myand({sh[i], sv[K-i]}));
}
myor(fin);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |