제출 #259886

#제출 시각아이디문제언어결과실행 시간메모리
259886peti1234Vision Program (IOI19_vision)C++17
100 / 100
221 ms2008 KiB
#include "vision.h" #include <bits/stdc++.h> using namespace std; #define rep(n) for (int i=0; i<n; i++) #define jrep(n) for (int j=0; j<n; j++) const int c=402, f=399; int pos, os[c], osk[c], oseg[c], kul[c], kulk[c], kseg[c], eos, ekul, van, s, nincs, rossz, db, p; vector<int> sol; void pb(int a) { sol.push_back(a); } int add(int a) { pos++; if (sol.size()==0) sol.push_back(rossz); if (a==1) add_or(sol); if (a==2) add_and(sol); if (a==3) add_xor(sol); if (a==4) add_not(p); sol.clear(); return pos; } int solve(int k) { rep(f-k) { pb(eos), pb(osk[i]), pb(osk[i+k]); oseg[i]=add(2); pb(ekul), pb(kulk[i]), pb(kulk[i+k]); kseg[i]=add(2); } rep(f-k) pb(oseg[i]); oseg[0]=add(1); rep(f-k) pb(kseg[i]); kseg[0]=add(1); pb(oseg[0]), pb(kseg[0]); return add(1); } void construct_network(int n, int m, int k) { pos=n*m-1, db=n*m; rep(db) pb(i); rossz=add(3); rep(f) { int ert=i; rep(db) { int x=i/m, y=i%m; if (x+199-y==ert) pb(i); } kul[ert]=add(1); rep(db) { int x=i/m, y=i%m; if (x+y==ert) pb(i); } os[ert]=add(1); if (!i) kulk[i]=kul[i], osk[i]=os[i]; else { pb(kulk[i-1]), pb(kul[i]); kulk[i]=add(3); pb(osk[i-1]), pb(os[i]); osk[i]=add(3); } } p=kulk[f-1], ekul=add(4); p=osk[f-1], eos=add(4); nincs=solve(k-1), van=solve(k); pb(van), pb(nincs); add(3); } /* int main() { return 0; } */
#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...