Submission #892821

#TimeUsernameProblemLanguageResultExecution timeMemory
892821Faisal_SaqibVision Program (IOI19_vision)C++17
44 / 100
710 ms116268 KiB
#include <vector> #include <string> #include <map> using namespace std; int add_and(std::vector<int> Ns); int add_or(std::vector<int> Ns); int add_xor(std::vector<int> Ns); int add_not(int N); bool vis[202][202]; int k,h,w; int f(int i,int j) { return (i*w)+j; } vector<int> val; map<vector<int>,bool> done; int px=-1,py=-1; void dfs(int i,int j) { // cout<<"At "<<i<<' '<<j<<endl; vis[i][j]=1; int ox=px; int oy=py; px=i; py=j; vector<int> val_orz; for(int fp=-k;fp<=k;fp++) { int rem=k-abs(fp); if(0<=(i+fp) and (i+fp)<h and 0<=(j+rem) and (j+rem)<w) { if(!done[{f(i,j),f(i+fp,j+rem)}]) { done[{f(i,j),f(i+fp,j+rem)}]=1; done[{f(i+fp,j+rem),f(i,j)}]=1; val_orz.push_back(f(i+fp,j+rem)); } if(!vis[i+fp][j+rem]) dfs(i+fp,j+rem); } rem*=-1; if(0<=(i+fp) and (i+fp)<h and 0<=(j+rem) and (j+rem)<w) { if(!done[{f(i,j),f(i+fp,j+rem)}]) { done[{f(i,j),f(i+fp,j+rem)}]=1; done[{f(i+fp,j+rem),f(i,j)}]=1; val_orz.push_back(f(i+fp,j+rem)); } if(!vis[i+fp][j+rem]) dfs(i+fp,j+rem); } } if(val_orz.size()>0) { val.push_back(add_and({f(i,j),add_or(val_orz)})); } px=ox; py=oy; } void construct_network(int H, int W, int K) { k=K; h=H; w=W; for(int i=0;i<H;i++) { for(int j=0;j<W;j++) { if(!vis[i][j]) { dfs(i,j); } } } add_or(val); }
#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...