Submission #992299

#TimeUsernameProblemLanguageResultExecution timeMemory
992299MarwenElarbiVision Program (IOI19_vision)C++17
0 / 100
1 ms600 KiB
#include <bits/stdc++.h> #include "vision.h" using namespace std; #define fi first #define se second #define ll long long #define pb push_back int arx[4]={1,-1,0,0}; int ary[4]={0,0,1,-1}; int n,m,k; int dp[31][31]; int cur; vector<int> res; bool valid(int x,int y,int a,int b){ if(x<=a&&y<=b) return false; if(x<0||x>=n||y<0||y>=m) return false; return true; } void dfs(int x,int y,int a,int b){ if(dp[x][y]==k){ add_and({a*m+b,x*m+y}); res.pb(cur); cur++; } for (int i = 0; i < 4; ++i) { int curx=x+arx[i]; int cury=y+ary[i]; if(valid(curx,cury,a,b)){ //cout <<"hey"<<endl; if(dp[curx][cury]<=dp[x][y]+1) continue; dp[curx][cury]=dp[x][y]+1; dfs(curx,cury,a,b); } } } void construct_network(int H, int W, int K) { n=H; m=W; k=K; cur=n*m; for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { for (int k = 0; k < n; ++k) { for (int t = 0; t < m; ++t) { dp[k][t]=1e9; } } dp[i][j]=0; dfs(i,j,i,j); } } add_or(res); }
#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...