제출 #955061

#제출 시각아이디문제언어결과실행 시간메모리
955061waldiVision Program (IOI19_vision)C++17
55 / 100
7 ms1124 KiB
#include "vision.h" #include <bits/stdc++.h> #define FOR(i,p,k) for(int i=(p);i<=(k);++i) #define REP(i,n) FOR(i,0,(n)-1) #define ssize(x) (int((x).size())) #define all(x) (x).begin(),(x).end() using namespace std; void construct_network(int h, int w, int k){ if(max(h, w) <= 10 || min(h, w) == 1){ vector<int> vec; REP(i, h) REP(j, w) REP(x, h) REP(y, w){ if(abs(i-x)+abs(j-y) == k){ int t = add_and({i*w+j, x*w+y}); vec.emplace_back(t); } } add_or(vec); return; } if(k == 1){ vector<int> poziomo(h); REP(i, h){ vector<int> vec; REP(j, w) vec.emplace_back(i*w+j); poziomo[i] = add_xor(vec); } vector<int> pionowo(w); REP(j, w){ vector<int> vec; REP(i, h) vec.emplace_back(i*w+j); pionowo[j] = add_xor(vec); } auto nic = [&](vector<int> vec){ return add_not(add_or(vec)); }; auto sasiednie = [&](vector<int> vec){ vector<int> xd; REP(i, ssize(vec)-1) xd.emplace_back(add_and({vec[i], vec[i+1]})); if(xd.empty()) xd.emplace_back(vec[0]); return add_or(xd); }; int a = add_and({nic(pionowo), sasiednie(poziomo)}); int b = add_and({sasiednie(pionowo), nic(poziomo)}); add_or({a, b}); return; } vector<int> vec; REP(x, h) REP(y, w){ if(x+y == k){ int t = add_and({0, x*w+y}); vec.emplace_back(t); } } add_or(vec); }
#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...