Submission #976824

#TimeUsernameProblemLanguageResultExecution timeMemory
976824hmm789Vision Program (IOI19_vision)C++14
58 / 100
8 ms1372 KiB
#include "vision.h" #include <bits/stdc++.h> using namespace std; void construct_network(int H, int W, int K) { int a[H][W], rows[H], cols[W]; for(int i = 0; i < H; i++) { for(int j = 0; j < W; j++) { a[i][j] = i*W+j; } } for(int i = 0; i < H; i++) { vector<int> v; for(int j = 0; j < W; j++) v.push_back(a[i][j]); rows[i] = add_xor(v); } for(int j = 0; j < W; j++) { vector<int> v; for(int i = 0; i < H; i++) v.push_back(a[i][j]); cols[j] = add_xor(v); } vector<int> res; for(int i = 1; i < K; i++) { int x = i, y = K-i; if(x >= H || y >= W) continue; vector<int> v; for(int j = 0; j < H-x; j++) v.push_back(add_and({rows[j], rows[j+x]})); int tmp = add_or(v); v.clear(); for(int j = 0; j < W-y; j++) v.push_back(add_and({cols[j], cols[j+y]})); res.push_back(add_and({tmp, add_or(v)})); } if(H > K) { vector<int> v; for(int j = 0; j < H-K; j++) v.push_back(add_and({rows[j], rows[j+K]})); int tmp = add_or(v); v.clear(); for(int j = 0; j < W; j++) v.push_back(cols[j]); res.push_back(add_and({tmp, add_not(add_or(v))})); } if(W > K) { vector<int> v; for(int j = 0; j < W-K; j++) v.push_back(add_and({cols[j], cols[j+K]})); int tmp = add_or(v); v.clear(); for(int j = 0; j < H; j++) v.push_back(rows[j]); res.push_back(add_and({tmp, add_not(add_or(v))})); } add_or(res); }
#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...