Submission #1237128

#TimeUsernameProblemLanguageResultExecution timeMemory
1237128AMnuVision Program (IOI19_vision)C++20
100 / 100
8 ms1732 KiB
#include "vision.h" #include <bits/stdc++.h> using namespace std; const int LOG=9; int N, M, P; int ans[LOG]; void sum() { int S=P, T; for (int i=0;i<LOG;i++) { T=add_and({S,ans[i]}); ans[i]=add_xor({S,ans[i]}); S=T; } } void row(int x) { vector <int> V={P}; for (int i=0;i<M;i++) { V.push_back(x*M+i); } P=add_xor(V); sum(); } void col(int x) { vector <int> V={P}; for (int i=0;i<N;i++) { V.push_back(i*M+x); } P=add_xor(V); sum(); } void build(int H,int W) { N=H; M=W; P=add_and({0,add_not(0)}); for (int i=0;i<LOG;i++) { ans[i]=P; } } void prefix() { for (int i=0;i<N;i++) { row(i); } for (int i=0;i<M;i++) { col(i); } } void equal(int K) { int S=P; for (int i=0;i<LOG;i++) { if ((K>>i)&1) { ans[i]=add_not(ans[i]); } S=add_or({S,ans[i]}); } add_not(S); } void construct_network(int H,int W,int K) { build(H,W); prefix(); equal(K); }
#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...