제출 #1154774

#제출 시각아이디문제언어결과실행 시간메모리
1154774weakweakweakVision Program (IOI19_vision)C++20
44 / 100
50 ms8792 KiB
#include "vision.h" #include <bits/stdc++.h> using namespace std; void construct_network(int H, int W, int K) { if ( H * W <= 900) { int id = H*W-1; vector<int > finid; for (int i = 0; i < H; i++) { for (int j = 0; j < W; j++) { vector<int> v1; for (int i2 = 0; i2 < H; i2++) for (int j2 = 0; j2 < W; j2++) { if (abs(i2-i) + abs(j2-j) == K) v1.push_back(i2*W+j2); } if (v1.empty()) continue; add_or(v1); id++; add_and({id, i*W+j});id++; finid.push_back(id); } } add_or(finid); return; } vector<int> prime = {2, 3, 5, 7, 31, 67, 127, 391}; vector<int> chp; int tmp = 1; for (int p : prime) { if (K % p and tmp <= 800) { chp.push_back(p); tmp *= p; } } // 29 17 51 89 int id = H*W-1; vector<int> chpid[2]; for (int p : chp) { vector<int> rs[400], rs2[400]; for (int i = 0; i < H; i++) { for (int j = 0; j < W; j++) { rs[(i+j) % p] . push_back(i*W + j); rs2[((i-j)%p+p)%p]. push_back(i*W + j); } } int r = K % p; vector<int> ids[2]; int good[2] = {0}; for (int t = 0; t < 2; t++) { for (int r1 = 0; r1 < p; r1++) { int r2 = (r1 + r) %p, r3 = 399; // if (r2 >= p) continue; if (rs[r1].empty() or (rs[r2].empty() and rs[r3].empty())) continue; auto tmp = rs[r2]; tmp.insert(tmp.end(), rs[r3].begin(), rs[r3].end()); add_or(rs[r1]); id++; add_or(tmp); id++; add_and({id-1, id});id++; ids[t].push_back(id); } for (int j = 0; j < 400; j++) rs[j] = rs2[j]; if (ids[t].empty()) continue; add_or(ids[t]); id++; good[t] = id; chpid[t].push_back(id); } } add_and(chpid[0]); id++; add_and(chpid[1]); id++; add_or({id-1, id}); }
#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...