제출 #1155693

#제출 시각아이디문제언어결과실행 시간메모리
1155693gygVision Program (IOI19_vision)C++20
32 / 100
4 ms1988 KiB
#include "vision.h" #include <bits/stdc++.h> using namespace std; #define vec vector #define pii pair<int, int> #define fir first #define sec second int n, m, k; int id(int i, int j) { return i * m + j; } void construct_network(int _n, int _m, int _k) { n = _n, m = _m, k = _k; int nm = n * m - 1; map<int, int> rw, cl; map<pii, int> rw_pr, cl_pr; map<int, int> rw_df, cl_df; for (int i = 0; i < n; i++) { vec<int> x; for (int j = 0; j < m; j++) x.push_back(id(i, j)); add_or(x), rw[i] = ++nm; } for (int j = 0; j < m; j++) { vec<int> x; for (int i = 0; i < n; i++) x.push_back(id(i, j)); add_or(x), cl[j] = ++nm; } for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { add_and({rw[i], rw[j]}), rw_pr[{i, j}] = ++nm; } } for (int i = 0; i < m; i++) { for (int j = i + 1; j < m; j++) { add_and({cl[i], cl[j]}), cl_pr[{i, j}] = ++nm; } } for (int d = 0; d < n; d++) { if (d == 0) { vec<int> x; for (int i = 0; i < n; i++) x.push_back(rw[i]); add_xor(x), rw_df[d] = ++nm; } else { vec<int> x; for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { if (abs(i - j) == d) x.push_back(rw_pr[{i, j}]); } } add_or(x), rw_df[d] = ++nm; } } for (int d = 0; d < m; d++) { if (d == 0) { vec<int> x; for (int i = 0; i < m; i++) x.push_back(cl[i]); add_xor(x), cl_df[d] = ++nm; } else { vec<int> x; for (int i = 0; i < m; i++) { for (int j = i + 1; j < m; j++) { if (abs(i - j) == d) x.push_back(cl_pr[{i, j}]); } } add_or(x), cl_df[d] = ++nm; } } vec<int> x; for (int rw_d = 0; rw_d < n; rw_d++) { for (int cl_d = 0; cl_d < m; cl_d++) { if (rw_d + cl_d != k) continue; add_and({rw_df[rw_d], cl_df[cl_d]}), x.push_back(++nm); } } add_or(x); }
#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...