Submission #585524

#TimeUsernameProblemLanguageResultExecution timeMemory
585524HanksburgerVision Program (IOI19_vision)C++17
100 / 100
52 ms5584 KiB
#include "vision.h"
#include <bits/stdc++.h>
using namespace std;
void construct_network(int H, int W, int K)
{
    vector<int> l1, l2, l3, r1, r2, r3, v1, v2, v3;
    for (int i=0; i<=H+W-2; i++)
    {
        vector<int> v, w;
        for (int x=0, y=i; x<H; x++, y--)
            if (0<=x && x<H && 0<=y && y<W)
                v.push_back(x*W+y);
        int res1=add_or(v);
        l1.push_back(res1);
        w.push_back(res1);
        w.push_back(add_not(add_xor(v)));
        int res2=add_and(w);
        l2.push_back(res2);
        l3.push_back(res2);
    }
    for (int i=W-1; i>-H; i--)
    {
        vector<int> v, w;
        for (int x=0, y=i; x<H; x++, y++)
            if (0<=x && x<H && 0<=y && y<W)
                v.push_back(x*W+y);
        int res1=add_or(v);
        r1.push_back(res1);
        w.push_back(res1);
        w.push_back(add_not(add_xor(v)));
        int res2=add_and(w);
        r2.push_back(res2);
        r3.push_back(res2);
    }
    for (int i=0, j=K; j<=H+W-2; i++, j++)
    {
        vector<int> v, w;
        for (int k=i; k<=j; k++)
            v.push_back(l1[k]);
        w.push_back(add_or(v));
        w.push_back(add_not(add_xor(v)));
        l2.push_back(add_and(w));
    }
    for (int i=W-1, j=W-1-K; j>-H; i--, j--)
    {
        vector<int> v, w;
        for (int k=i; k>=j; k--)
            v.push_back(r1[W-1-k]);
        w.push_back(add_or(v));
        w.push_back(add_not(add_xor(v)));
        r2.push_back(add_and(w));
    }
    for (int i=0, j=K-1; j<=H+W-2; i++, j++)
    {
        vector<int> v, w;
        for (int k=i; k<=j; k++)
            v.push_back(l1[k]);
        w.push_back(add_or(v));
        w.push_back(add_not(add_xor(v)));
        l3.push_back(add_and(w));
    }
    for (int i=W-1, j=W-1-K+1; j>-H; i--, j--)
    {
        vector<int> v, w;
        for (int k=i; k>=j; k--)
            v.push_back(r1[W-1-k]);
        w.push_back(add_or(v));
        w.push_back(add_not(add_xor(v)));
        r3.push_back(add_and(w));
    }
    v1.push_back(add_or(l2));
    v1.push_back(add_or(r2));
    v2.push_back(add_or(l3));
    v2.push_back(add_or(r3));
    v3.push_back(add_and(v1));
    v3.push_back(add_not(add_and(v2)));
    add_and(v3);
}
#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...