Submission #1189492

#TimeUsernameProblemLanguageResultExecution timeMemory
1189492alexddVision Program (IOI19_vision)C++20
100 / 100
13 ms2548 KiB
#include <bits/stdc++.h> #include "vision.h" using namespace std; void construct_network(int H, int W, int K) { vector<int> linii,coloane; vector<int> sus(H+2),jos(H+2); vector<int> st(W+2),dr(W+2); for(int lin=0;lin<H;lin++) { vector<int> aux; if(lin-1 >= 0) aux.push_back(sus[lin-1]); for(int i=0;i<W;i++) aux.push_back(lin*W+i); sus[lin] = add_or(aux); } for(int lin=H-1;lin>=0;lin--) { vector<int> aux; if(lin+1 < H) aux.push_back(jos[lin+1]); for(int i=0;i<W;i++) aux.push_back(lin*W+i); jos[lin] = add_or(aux); } for(int lin=1;lin<H;lin++) { linii.push_back(add_and({sus[lin-1],jos[lin]})); } for(int col=0;col<W;col++) { vector<int> aux; if(col-1 >= 0) aux.push_back(st[col-1]); for(int i=0;i<H;i++) aux.push_back(i*W+col); st[col] = add_or(aux); } for(int col=W-1;col>=0;col--) { vector<int> aux; if(col+1 < W) aux.push_back(dr[col+1]); for(int i=0;i<H;i++) aux.push_back(i*W+col); dr[col] = add_or(aux); } for(int col=1;col<W;col++) { coloane.push_back(add_and({st[col-1],dr[col]})); } vector<int> combinat; for(int x:linii) combinat.push_back(x); for(int x:coloane) combinat.push_back(x); int zero = add_and({combinat[0],add_not(combinat[0])}); vector<int> cnt; for(int lun=0;(1<<lun)<=(H+W-2);lun++) cnt.push_back(zero); //for(int x:cnt) cerr<<x<<" zzz\n"; for(int x:combinat) { vector<int> newcnt; int pref = x; for(int i=0;i<cnt.size();i++) { newcnt.push_back(add_xor({pref,cnt[i]})); pref = add_and({pref,cnt[i]}); } cnt = newcnt; } vector<int> rez; for(int i=0;i<cnt.size();i++) if((1<<i)&K) rez.push_back(cnt[i]); else rez.push_back(add_not(cnt[i])); add_and(rez); } /* 2 2 1 0 0 1 1 0 0 0 1 0 0 1 0 -1 2 3 3 0 0 1 2 1 0 0 2 0 0 1 1 -1 */
#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...