Submission #316668

#TimeUsernameProblemLanguageResultExecution timeMemory
316668jainbot27Vision Program (IOI19_vision)C++17
100 / 100
14 ms1920 KiB

#include <bits/stdc++.h>
using namespace std;
#include "vision.h"
#define SZ(x) x.size()
void construct_network(int n, int m, int k) {
    vector<int> sumgates(n + m - 1, -1), sumgates2(n + m - 1, -1); // [0; (n-1)+(m-1)].

    vector<vector<int>> lst(n + m - 1), lst2(n + m -1);

    for (int i = 0; i != n; ++i)
        for (int j = 0; j != m; ++j) {
            lst[i + j].push_back(i * m + j);
            lst2[i + j].push_back(i * m + (m - 1 - j));
        }
    
    for (int sm = 0; sm < n + m - 1; ++sm) {
        sumgates[sm] = add_or(lst[sm]);
        sumgates2[sm] = add_or(lst2[sm]);
    }

    vector<int> pref(n + m - 1, -1), pref2(n + m - 1, -1);

    pref[0] = sumgates[0];
    pref2[0] = sumgates2[0];

    for (int sm = 1; sm < SZ(pref); ++sm) {
        pref[sm] = add_or({sumgates[sm], pref[sm - 1]});
        pref2[sm] = add_or({sumgates2[sm], pref2[sm - 1]});
    }

    int node_k = -1, node_kplus1 = -1;

    for (int iter = 0; iter != 2; ++iter) {
        int the_k = (iter == 0 ? k : k + 1);
        int& res_node = (iter == 0 ? node_k : node_kplus1);

        vector<int> or_lst;
        for (int s = 0; s + the_k < SZ(sumgates); ++s)
            or_lst.push_back(add_and({pref[s], sumgates[s + the_k]}));

        for (int s = 0; s + the_k < SZ(sumgates2); ++s)
            or_lst.push_back(add_and({pref2[s], sumgates2[s + the_k]}));

        if (not or_lst.empty())
            res_node = add_or(or_lst);
    }

    if (node_kplus1 == -1)
        add_or({node_k, node_k});
    else
        add_xor({node_k, node_kplus1});
}

Compilation message (stderr)

vision.cpp: In function 'void construct_network(int, int, int)':
vision.cpp:27:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   27 |     for (int sm = 1; sm < SZ(pref); ++sm) {
      |                         ^
vision.cpp:39:35: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   39 |         for (int s = 0; s + the_k < SZ(sumgates); ++s)
      |                                   ^
vision.cpp:42:35: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   42 |         for (int s = 0; s + the_k < SZ(sumgates2); ++s)
      |                                   ^
#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...