Submission #267209

#TimeUsernameProblemLanguageResultExecution timeMemory
267209ggoorooVision Program (IOI19_vision)C++14
33 / 100
6 ms1148 KiB
#include "vision.h" #include <cstdio> #include <iostream> #include <queue> #define N 205 using namespace std; int h, w, k, T, en, mn = 2e9, mx, v[N][N]; int dr[4] = {-1, 0, 0, 1}, dc[4] = {0, -1, 1, 0}; queue<int> qr, qc, qe; int pq_num(int p, int q) { return p * w + q; } void pu(int p, int q, int e) { if (p < 0 || p >= h || q < 0 || q >= w || v[p][q] == T) return; v[p][q] = T; qr.push(p); qc.push(q); qe.push(e); } vector<int> in; void f(int p, int q, int k) { int i, tr, tc, te, re; pu(p, q, 0); while (!qr.empty()) { tr = qr.front(); qr.pop(); tc = qc.front(); qc.pop(); te = qe.front(); qe.pop(); if (te == k) { in.clear(); in.push_back(pq_num(p, q)); in.push_back(pq_num(tr, tc)); re = add_and(in); mn = min(mn, re); mx = max(mx, re); } else { for (i = 0; i < 4; i++) { pu(tr + dr[i], tc + dc[i], te + 1); } } } } void construct_network(int hh, int ww, int kk) { int i, j; h = hh; w = ww; k = kk; for (i = 0; i < h; i++) { for (j = 0; j < w; j++) { T++; f(i, j, k); } } in.clear(); for (i = mn; i <= mx; i++) { in.push_back(i); } add_or(in); // Ns = {0, 1}; // int a = add_and(Ns); // Ns = {0, a}; // int b = add_or(Ns); // Ns = {0, 1, b}; // int c = add_xor(Ns); // add_not(c); }
#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...