Submission #1189449

#TimeUsernameProblemLanguageResultExecution timeMemory
1189449alexddVision Program (IOI19_vision)C++20
0 / 100
4 ms4740 KiB
#include <bits/stdc++.h>
#include "vision.h"
using namespace std;

void construct_network(int H, int W, int K)
{
    K += 2;
    vector<int> linii,coloane;
    for(int lin=0;lin<H;lin++)
    {
        vector<int> v;
        for(int i=0;i<=lin;i++)
            for(int j=0;j<W;j++)
                v.push_back(i*W+j);
        int sus = add_or(v);

        v.clear();
        for(int i=lin;i<H;i++)
            for(int j=0;j<W;j++)
                v.push_back(i*W+j);
        int jos = add_or(v);

        linii.push_back(add_and({sus,jos}));
    }
    for(int col=0;col<W;col++)
    {
        vector<int> v;
        for(int i=0;i<=col;i++)
            for(int j=0;j<H;j++)
                v.push_back(j*W+i);
        int st = add_or(v);

        v.clear();
        for(int i=col;i<W;i++)
            for(int j=0;j<H;j++)
                v.push_back(j*W+i);
        int dr = add_or(v);

        coloane.push_back(add_and({st,dr}));
    }
    vector<int> rezs;
    for(int d=0;d<W;d++)
    {
        vector<int> newv;
        for(int i=0;i<2*(H+W);i++)
        {
            if(i < linii.size() && (i-d >= 0 && i-d < (int)coloane.size()))
            {
                newv.push_back(add_and({linii[i],coloane[i-d]}));
            }
            else if(i < linii.size())
            {
                newv.push_back(linii[i]);
            }
            else if(i-d >= 0 && i-d < (int)coloane.size())
            {
                newv.push_back(coloane[i-d]);
            }
            else
            {
                ///zero
            }
        }
        //assert((int)newv.size() >= K);
        while((int)newv.size() > K)
            newv.pop_back();
        if(newv.size() == K) rezs.push_back(add_and(newv));
    }
    assert(!rezs.empty());
    add_and(rezs);
}
/*

2 3 3
0 0 1 2
1 0 0 2
0 0 1 1
-1


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