Submission #257002

#TimeUsernameProblemLanguageResultExecution timeMemory
257002b00n0rpVision Program (IOI19_vision)C++17
58 / 100
12 ms1400 KiB
#include "vision.h" #include<bits/stdc++.h> using namespace std; #define REP(i,n) for(int i = 0; i < n; i ++) #define FOR(i,a,b) for(int i = a; i < b; i++) #define vi vector<int> #define pb push_back vi xorrow,xorcol; int diffrow[205],diffcol[205]; void construct_network(int H, int W, int K){ // srand(time(0)); int cnt = 0; REP(i,H){ vi v; REP(j,W) v.pb(i*W+j); xorrow.pb(add_xor(v)); cnt++; } REP(j,W){ vi v; REP(i,H) v.pb(i*W+j); xorcol.pb(add_xor(v)); cnt++; } int cur = add_or(xorrow); diffrow[0] = add_not(cur); cur = add_or(xorcol); diffcol[0] = add_not(cur); cnt+=4; vi ignore; if(K > 80 and K <= 105) ignore = {41,17,70,77}; else ignore = {-1,-1,-1,-1}; FOR(k,1,K+1){ vi vrow,vcol; if((!(k == ignore[0] or k == ignore[1] or k == ignore[2] or k == ignore[3])) and k+W-1 >= K) REP(i,H-k){ vrow.pb(add_and({xorrow[i],xorrow[i+k]})); cnt++; } if((!(k == K-ignore[0] or k == K-ignore[1] or k == K-ignore[2] or k == K-ignore[3])) and k+H-1 >= K) REP(i,W-k){ vcol.pb(add_and({xorcol[i],xorcol[i+k]})); cnt++; } if(vrow.size()){ diffrow[k] = add_or(vrow); cnt++; } else diffrow[k] = -1; if(vcol.size()){ diffcol[k] = add_or(vcol); cnt++; } else diffcol[k] = -1; } vi ans; REP(k,K+1){ if(diffrow[k] == -1 or diffcol[K-k] == -1) continue; ans.pb(add_and({diffrow[k],diffcol[K-k]})); cnt++; } // cout << cnt << " :-<\n"; add_or(ans); }
#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...