제출 #1219963

#제출 시각아이디문제언어결과실행 시간메모리
1219963DeathIsAweVision Program (IOI19_vision)C++20
100 / 100
24 ms4936 KiB
#include "vision.h" #include <bits/stdc++.h> #define pb push_back #define mp make_pair #define ff first #define ss second #define ll long long using namespace std; int h, w, k; int overk(vector<int> result) { vector<int> dum1, dum2, checks; if (k == w + h - 2) { for (int i=0;i<h*w;i++) dum1.pb(i); return add_not(add_or(dum1)); } for (int i=0;i<h+w-2-k;i++) { dum1.clear(); dum2.clear(); for (int j=0;j<=i;j++) dum1.pb(result[j]); for (int j=i+k+1;j<h+w-1;j++) dum2.pb(result[j]); checks.pb(add_and({add_or(dum1), add_or(dum2)})); } return add_or(checks); } int onk(vector<int> result) { vector<int> checks; for (int i=0;i<h+w-1-k;i++) { checks.pb(add_and({result[i], result[i + k]})); } return add_or(checks); } void construct_network(int H, int W, int K) { h = H; w = W; k = K; if (h*w == 2) { if (K == 1) add_and({0}); else add_not(0); return; } int curnum = 0; vector<vector<int>> diagvec1(h + w - 1), diagvec2(h + w - 1); for (int i=0;i<h;i++) for (int j=0;j<w;j++) diagvec1[i + j].pb(i*w + j); for (int i=0;i<h;i++) for (int j=0;j<w;j++) diagvec2[i + w - j - 1].pb(i*w + j); vector<int> result1, result2; for (int i=0;i<h+w-1;i++) { result1.pb(add_xor(diagvec1[i])); } for (int i=0;i<h+w-1;i++) { result2.pb(add_xor(diagvec2[i])); } int overk1 = overk(result1), overk2 = overk(result2), onk1 = onk(result1), onk2 = onk(result2); //cout << overk1 << ' ' << overk2 << ' ' << onk1 << ' ' << onk2 << endl; add_and({add_not(add_or({overk1, overk2})), add_or({onk1, onk2})}); return; }
#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...