Submission #928459

#TimeUsernameProblemLanguageResultExecution timeMemory
92845912345678Vision Program (IOI19_vision)C++17
100 / 100
13 ms2004 KiB
#include "vision.h"
#include <bits/stdc++.h>

using namespace std;

const int nx=205;
int R[nx], C[nx], cr, l, vl, F, T, zero;

int add_num(int x, int c)
{
    for (int i=0; i<9; i++)
    {
        add_xor(vector<int> {x+2*i, c});
        c=add_and(vector<int> {x+2*i, c});
    }
    return c-17;
}

void construct_network(int H, int W, int K) {
    add_not(H*W-1);
    F=add_and(vector<int> {H*W-1, H*W});
    T=add_or(vector<int> {H*W-1, H*W});
    for (int i=0; i<18; i++) add_not(T);
    vl=H*W+3;
	for (int i=0; i<H; i++)
    {
        vector<int> v;
        for (int j=0; j<W; j++) v.push_back(W*i+j);
        R[i]=add_xor(v);        
    }
    for (int i=0; i<W; i++)
    {
        vector<int> v;
        for (int j=0; j<H; j++) v.push_back(i+W*j);
        C[i]=add_xor(v);
    }
    cr=F;
    for (int i=0; i<H; i++)
    {
        cr=add_xor(vector<int> {cr, R[i]});
        vl=add_num(vl, cr);
    }
    //cout<<"first "<<vl<<'\n';
    cr=F;
    for (int i=0; i<W; i++)
    {

        cr=add_xor(vector<int> {cr, C[i]});
        //cout<<"here "<<i<<' '<<vl<<'\n';
        vl=add_num(vl, cr);
        //cout<<"loc "<<i<<' '<<vl<<'\n';
    }
    //cout<<"second "<<vl<<'\n';
    vector<int> v;
    for (int i=0; i<9; i++) v.push_back(add_not(add_xor(vector<int> {(K&(1<<i))?T:F, vl+2*i})));
    add_and(v);
}
#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...