제출 #1167303

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