Submission #257006

#TimeUsernameProblemLanguageResultExecution timeMemory
257006b00n0rpVision Program (IOI19_vision)C++17
81 / 100
11 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)); if(max(H,W) <= 100 or min(H,W) == 1 or K == 1){ 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,79}; 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); } else{ vi v; REP(i1,1){ REP(j1,1){ REP(i2,H){ REP(j2,W){ if(i1*W+j1 < i2*W+j2 and abs(i1-i2)+abs(j1-j2) == K){ v.pb(add_and({i1*W+j1,i2*W+j2})); } } } } } add_or(v); } }
#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...