Advertisement
Guest User

Untitled

a guest
Jan 15th, 2015
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.21 KB | None | 0 0
  1. #include <cmath>
  2. #include <cstring>
  3. #include <ctime>
  4. #include <iostream>
  5. #include <algorithm>
  6. #include <set>
  7. #include <vector>
  8. #include <sstream>
  9. #include <typeinfo>
  10. #include <fstream>
  11. #include <map>
  12.  
  13. using namespace std;
  14. int dx[]={1,-1,0,0};
  15. int dy[]={0, 0,1,-1};
  16. const int N=1010;
  17.  
  18. vector<int> x,y,finalPoints;
  19. set< pair<int,int> > grid;
  20. int k;
  21.  
  22. void blockInGrid() {
  23.         int n=x.size();
  24.         for(int i=0;i<n;i++) {
  25.             auto t = make_pair(x[i],y[i]);
  26.             grid.insert(t);
  27.         }
  28. }
  29. void dfs(int x,int y,int t) {
  30.     auto cur=make_pair(x,y);
  31.     if(grid.count(cur)) {
  32.         return ;
  33.     }
  34.     grid.insert(cur);
  35.     if(t==k) {
  36.         finalPoints.push_back(x);
  37.         return;
  38.     }
  39.  
  40.     for(int i=0;i<4;i++) {
  41.         int nx=x+dx[i];
  42.         int ny=y+dy[i];
  43.         dfs(nx,ny,t+1);
  44.     }
  45. }
  46.  
  47. class TheGridDivTwo {
  48.     public:
  49.     int find(vector<int> _x, vector<int> _y, int _k) {
  50.         x=_x;
  51.         y=_y;
  52.         k=_k;
  53.         grid.clear();
  54.         finalPoints.clear();
  55.         blockInGrid();
  56.         dfs(0,0,0);
  57.         int res=0;
  58.         for(int i : finalPoints) {
  59.             res=max(res,i);
  60.         }
  61.        
  62.         return res;
  63.     }
  64. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement