Submission #611724

#TimeUsernameProblemLanguageResultExecution timeMemory
611724HanksburgerVision Program (IOI19_vision)C++17
100 / 100
27 ms2828 KiB
#include "vision.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> l, r, a, b, c, d, tmp;
void construct_network(int n, int m, int k)
{
    for (int i=0; i<=n+m-2; i++)
    {
        tmp.clear();
        for (int j=0; j<n; j++)
            if (i-j>=0 && i-j<m)
                tmp.push_back(j*m+i-j);
        l.push_back(add_or(tmp));
    }
    for (int i=-n+1; i<=m-1; i++)
    {
        tmp.clear();
        for (int j=0; j<n; j++)
            if (i+j>=0 && i+j<m)
                tmp.push_back(j*m+i+j);
        r.push_back(add_or(tmp));
    }
    for (int i=0; i<n+m-2; i++)
    {
        tmp.clear();
        for (int j=i+1; j<=min(i+k, n+m-2); j++)
            tmp.push_back(l[j]);
        int x=add_or(tmp);
        tmp.clear();
        tmp.push_back(l[i]);
        tmp.push_back(x);
        a.push_back(add_and(tmp));
        if (i+k<=n+m-2)
        {
            tmp.clear();
            tmp.push_back(l[i]);
            tmp.push_back(l[i+k]);
            b.push_back(add_and(tmp));
        }
    }
    for (int i=0; i<n+m-2; i++)
    {
        tmp.clear();
        for (int j=i+1; j<=min(i+k, n+m-2); j++)
            tmp.push_back(r[j]);
        int x=add_or(tmp);
        tmp.clear();
        tmp.push_back(r[i]);
        tmp.push_back(x);
        c.push_back(add_and(tmp));
        if (i+k<=n+m-2)
        {
            tmp.clear();
            tmp.push_back(r[i]);
            tmp.push_back(r[i+k]);
            d.push_back(add_and(tmp));
        }
    }
    tmp.clear();
    tmp.push_back(add_or(a));
    tmp.push_back(add_xor(l));
    int x1=add_or(tmp);
    tmp.clear();
    tmp.push_back(add_or(d));
    tmp.push_back(x1);
    int x2=add_and(tmp);
    tmp.clear();
    tmp.push_back(add_or(c));
    tmp.push_back(add_xor(r));
    int x3=add_or(tmp);
    tmp.clear();
    tmp.push_back(add_or(b));
    tmp.push_back(x3);
    int x4=add_and(tmp);
    tmp.clear();
    tmp.push_back(x2);
    tmp.push_back(x4);
    add_or(tmp);
}
#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...