Submission #161290

#TimeUsernameProblemLanguageResultExecution timeMemory
161290dolphingarlicVision Program (IOI19_vision)C++14
100 / 100
82 ms5436 KiB
#include "vision.h"
#include <bits/stdc++.h>
#define FOR(i, x, y) for (int i = x; i < y; i++)
using namespace std;

void construct_network(int H, int W, int K) {
    vector<int> l_diagonal_or, l_diagonal_xor, r_diagonal_or, r_diagonal_xor;
    FOR(i, 0, H + W - 1) {
        vector<int> l, r;
        FOR(j, 0, i + 1) {
            if (j < H && i - j < W) {
                l.push_back(j * W + i - j);
                r.push_back((H - j - 1) * W + i - j);
            }
        }
        l_diagonal_or.push_back(add_or(l));
        l_diagonal_xor.push_back(add_xor(l));
        r_diagonal_or.push_back(add_or(r));
        r_diagonal_xor.push_back(add_xor(r));
    }

    vector<int> l_2black_k_plus_1, r_2black_k_plus_1;
    FOR(i, 0, H + W - K - 1) {
        vector<int> l_or, l_xor, r_or, r_xor;
        FOR(j, 0, K + 1) {
            l_or.push_back(l_diagonal_or[i + j]);
            l_xor.push_back(l_diagonal_xor[i + j]);
            r_or.push_back(r_diagonal_or[i + j]);
            r_xor.push_back(r_diagonal_xor[i + j]);
        }
        l_2black_k_plus_1.push_back(add_xor({add_or(l_or), add_xor(l_xor)}));
        r_2black_k_plus_1.push_back(add_xor({add_or(r_or), add_xor(r_xor)}));
    }
    int less_than_k_plus_1 = add_and({add_or(l_2black_k_plus_1), add_or(r_2black_k_plus_1)});

    vector<int> l_2black_k, r_2black_k;
    FOR(i, 0, H + W - K) {
        vector<int> l_or, l_xor, r_or, r_xor;
        FOR(j, 0, K) {
            l_or.push_back(l_diagonal_or[i + j]);
            l_xor.push_back(l_diagonal_xor[i + j]);
            r_or.push_back(r_diagonal_or[i + j]);
            r_xor.push_back(r_diagonal_xor[i + j]);
        }
        l_2black_k.push_back(add_xor({add_or(l_or), add_xor(l_xor)}));
        r_2black_k.push_back(add_xor({add_or(r_or), add_xor(r_xor)}));
    }
    int less_than_k = add_and({add_or(l_2black_k), add_or(r_2black_k)});

    add_and({add_not(less_than_k), less_than_k_plus_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...