제출 #332627

#제출 시각아이디문제언어결과실행 시간메모리
332627nicholaskVision Program (IOI19_vision)C++14
0 / 100
7 ms2152 KiB
#include "vision.h" #include <bits/stdc++.h> using namespace std; void construct_network(int H,int W,int K){ int cnt=0; map <pair <int,int>,bool> p; for (int i=0; i<H; i++){ for (int j=0; j<W; j++){ for (int xp=i,yp=j-K; xp!=i-K&&yp!=j; xp--,yp++){ if (xp>=0&&xp<H&&yp>=0&&yp<W&&!p[{i*W+j,xp*W+yp}]&&!p[{xp*W+yp,i*W+j}]){ add_or({i*W+j,xp*W+yp}); cnt++; p[{i*W+j,xp*W+yp}]=1; } } for (int xp=i-K,yp=j; xp!=i&&yp!=j+K; xp++,yp++){ if (xp>=0&&xp<H&&yp>=0&&yp<W&&!p[{i*W+j,xp*W+yp}]&&!p[{xp*W+yp,i*W+j}]){ add_or({i*W+j,xp*W+yp}); cnt++; p[{i*W+j,xp*W+yp}]=1; } } for (int xp=i,yp=j+K; xp!=i+K&&yp!=j; xp++,yp--){ if (xp>=0&&xp<H&&yp>=0&&yp<W&&!p[{i*W+j,xp*W+yp}]&&!p[{xp*W+yp,i*W+j}]){ add_or({i*W+j,xp*W+yp}); cnt++; p[{i*W+j,xp*W+yp}]=1; } } for (int xp=i+K,yp=j; xp!=i&&yp!=j-K; xp--,yp--){ if (xp>=0&&xp<H&&yp>=0&&yp<W&&!p[{i*W+j,xp*W+yp}]&&!p[{xp*W+yp,i*W+j}]){ add_or({i*W+j,xp*W+yp}); cnt++; p[{i*W+j,xp*W+yp}]=1; } } } } if (cnt==1) return; //cnt results stored in [h*w,h*w+cnt) vector <int> v; int curpr=0,cnt1=0; for (int i=0; i<cnt; i++){ v.push_back(H*W+i); curpr++; if (i==cnt-1||curpr==10000){ add_or(v); v.clear(); cnt1++; curpr=0; } } if (cnt1==1) return; //cnt1 results stored in [h*w+cnt,h*w+cnt+cnt1) v.clear(); for (int i=H*W+cnt; i<H*W+cnt+cnt1; i++){ v.push_back(i); } 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...