제출 #1226899

#제출 시각아이디문제언어결과실행 시간메모리
1226899irmuunVision Program (IOI19_vision)C++20
12 / 100
24 ms4288 KiB
#include "vision.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define ff first #define ss second #define all(s) s.begin(),s.end() #define rall(s) s.rbegin(),s.rend() void construct_network(int H,int W,int K){ vector<int>l[H+W]; for(int i=0;i<H;i++){ for(int j=0;j<W;j++){ l[i+j].pb(i*W+j); } } int cur=H*W-1; vector<int>L,L2; //0 - H+W-2 for(int i=0;i<=H+W-2;i++){ add_or(l[i]); cur++; L.pb(cur); add_xor(l[i]); cur++; add_not(cur); cur++; add_and({cur,cur-2}); cur++; L2.pb(cur); } vector<int>r[H+W]; for(int i=0;i<H;i++){ for(int j=0;j<W;j++){ r[i-j+(W-1)].pb(i*W+j); } } vector<int>R,R2; for(int i=0;i<=H+W-2;i++){ add_or(r[i]); cur++; R.pb(cur); add_xor(r[i]); cur++; add_not(cur); cur++; add_and({cur,cur-2}); cur++; R2.pb(cur); } vector<int>v[2]; for(int i=K;i<=H+W-2;i++){ vector<int>Ns,N2s; for(int j=i-K;j<=i;j++){ Ns.pb(L[j]); } for(int j=i-K;j<=i;j++){ N2s.pb(L2[j]); } add_or(Ns); cur++; add_xor(Ns); cur++; add_not(cur); cur++; add_and({cur,cur-2}); cur++; add_or(N2s); cur++; add_or({cur,cur-1}); cur++; v[0].pb(cur); } for(int i=K;i<=H+W-2;i++){ vector<int>Ns,N2s; for(int j=i-K;j<=i;j++){ Ns.pb(L[j]); } for(int j=i-K;j<=i;j++){ N2s.pb(L2[j]); } add_or(Ns); cur++; add_xor(Ns); cur++; add_not(cur); cur++; add_and({cur,cur-2}); cur++; add_or(N2s); cur++; add_or({cur,cur-1}); cur++; v[1].pb(cur); } vector<int>u[2]; for(int i=K-1;i<=H+W-2;i++){ vector<int>Ns,N2s; for(int j=i-K+1;j<=i;j++){ Ns.pb(L[j]); } for(int j=i-K+1;j<=i;j++){ N2s.pb(L2[j]); } add_or(Ns); cur++; add_xor(Ns); cur++; add_not(cur); cur++; add_and({cur,cur-2}); cur++; add_or(N2s); cur++; add_or({cur,cur-1}); cur++; u[0].pb(cur); } for(int i=K-1;i<=H+W-2;i++){ vector<int>Ns,N2s; for(int j=i-K+1;j<=i;j++){ Ns.pb(R[j]); } for(int j=i-K+1;j<=i;j++){ N2s.pb(R2[j]); } add_or(Ns); cur++; add_xor(Ns); cur++; add_not(cur); cur++; add_and({cur,cur-2}); cur++; add_or(N2s); cur++; add_or({cur,cur-1}); cur++; u[1].pb(cur); } add_or(v[0]); cur++; add_or(v[1]); cur++; add_and({cur,cur-1}); cur++; add_or(u[0]); cur++; add_or(u[1]); cur++; add_and({cur,cur-1}); cur++; add_not(cur); cur++; add_and({cur,cur-4}); }
#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...