이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<iostream>
#include<vector>
#include "vision.h"
using namespace std;
static int diag[405];
static vector<int> v, w;
static void solve(int &r1, int &r2, int nr, int k){
    int i, x, aux, j, y;
    for(i = 1; i <= nr - k; i++){
        v.push_back(diag[i]);
        v.push_back(diag[i + k]);
        x = add_and(v);
        w.push_back(x);
        v.clear();
    }
    r2 = add_or(w);
    w.clear();
    for(i = 1; i <= k; i++){
        v.push_back(diag[i]);
    }
    aux = add_xor(v);
    v.clear();
    for(i = 1; i <= nr - k; i++){
        for(j = i; j <= i + k; j++){
            v.push_back(diag[j]);
        }
        y = add_xor(v);
        y = add_not(y);
        x = add_or(v);
        v.clear();
        v.push_back(x);
        v.push_back(y);
        w.push_back( add_and(v) );
        v.clear();
    }
    r1 = add_or(w);
    w.clear();
    v.push_back(r1);
    v.push_back(aux);
    r1 = add_or(v);
    v.clear();
}
void construct_network(int n, int m, int k) {
    int i, j, ii, jj, nr, r1, r2, r3, r4;
    nr = 0;
    for(i = n - 1; i > 0; i--){
        ii = i;
        jj = 0;
        while(ii < n && jj < m){
            v.push_back(ii * m + jj);
            ii++;
            jj++;
        }
        diag[++nr] = add_or(v);
        v.clear();
    }
    for(j = 0; j < m; j++){
        ii = 0;
        jj = j;
        while(ii < n && jj < m){
            v.push_back(ii * m + jj);
            ii++;
            jj++;
        }
        diag[++nr] = add_or(v);
        v.clear();
    }
    solve(r1, r2, nr, k);
    nr = 0;
    for(i = n - 1; i > 0; i--){
        ii = i;
        jj = m - 1;
        while(ii < n && jj >= 0){
            v.push_back(ii * m + jj);
            ii++;
            jj--;
        }
        diag[++nr] = add_or(v);
        v.clear();
    }
    for(j = m - 1; j >= 0; j--){
        ii = 0;
        jj = j;
        while(ii < n && jj >= 0){
            v.push_back(ii * m + jj);
            ii++;
            jj--;
        }
        diag[++nr] = add_or(v);
        v.clear();
    }
    solve(r3, r4, nr, k);
    v.push_back(r1);
    v.push_back(r3);
    r1 = add_and(v);
    v.clear();
    v.push_back(r2);
    v.push_back(r4);
    r2 = add_or(v);
    v.clear();
    v.push_back(r1);
    v.push_back(r2);
    add_and(v);
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |