제출 #1167281

#제출 시각아이디문제언어결과실행 시간메모리
1167281hyakupVision Program (IOI19_vision)C++20
35 / 100
51 ms4028 KiB
#include "vision.h" #include <bits/stdc++.h> using namespace std; void construct_network( int n, int m, int k ){ int ops = n*m - 1; auto id = [&]( int i, int j ){ return i*m + j; }; vector<int> c, d; int a, b; for( int dist = 0; dist <= k; dist++ ){ int p1 = 0, p2 = -dist; vector<int> aux; while( p2 <= (n + m - 2)){ vector<int> v; for( int i = 0; i < n; i++ ) for( int j = 0; j < m; j++ ) if( i + j == p1 || i + j == p2 ) v.push_back(id(i, j)); if( !v.empty() ) aux.push_back(add_or(v)); p1++; p2++; } if( dist < k ) c.push_back(add_xor(aux)); else a = add_xor(aux); p1 = 1 - m; p2 = 1 - m - dist; aux.clear(); while( p2 <= n - 1 ){ vector<int> v; for( int i = 0; i< n; i++ ) for( int j = 0; j < m; j++ ) if( i - j == p1 || i - j == p2 ) v.push_back(id(i, j)); if( !v.empty() ) aux.push_back(add_or(v)); p1++; p2++; } if( dist < k ) d.push_back(add_xor(aux)); else b = add_xor(aux); } int C = add_or(c); int D = add_or(d); vector<int> aux = {a, D}; int e = add_and(aux); aux = {b, C}; int f = add_and(aux); aux = {a, b}; int g = add_and(aux); aux = { e, f, g }; add_or(aux); }
#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...