Advertisement
hugol

Untitled

Dec 11th, 2013
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.74 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <cstdlib>
  4. using namespace std;
  5. namespace DIR {static const int L=0, U=1, R=2, D=3;};
  6. static char* kierunki[4] = {"LEFT","UP","RIGHT","DOWN"};
  7. struct point{int x, y;};
  8. int n, p;
  9. int map[30][20] = {0};
  10. int dirs[4] = {DIR::L}; // lewo]
  11.  
  12. bool namapie(point pkt, int dir){
  13.     switch(dir){
  14.         case (DIR::L): if (pkt.x==0) return false; break;
  15.         case (DIR::U): if (pkt.y==0) return false; break;
  16.         case (DIR::R): if (pkt.x==29) return false; break;
  17.         case (DIR::D): if (pkt.y==19) return false; break;
  18.     }
  19.     return true;
  20. }
  21.  
  22. bool isavaiable(point pkt, int dir){
  23.     switch(dir){
  24.         case (DIR::L): if (map[pkt.x-1][pkt.y]==0) return true; break;
  25.         case (DIR::U): if (map[pkt.x][pkt.y-1]==0) return true; break;
  26.         case (DIR::R): if (map[pkt.x+1][pkt.y]==0) return true; break;
  27.         case (DIR::D): if (map[pkt.x][pkt.y+1]==0) return true; break;
  28.     }
  29.     return false;
  30. }
  31. int calcdir(point p1, point p0){
  32.     if (p1.x-p0.x == -1) return DIR::L; else
  33.     if (p1.y-p0.y == -1) return DIR::U; else
  34.     if (p1.x-p0.x == 1) return DIR::R; else
  35.     if (p1.y-p0.y == 1) return DIR::D; else
  36.     return 0;
  37. }
  38. int main(){
  39.     point pos0[4];
  40.     point pos1[4];
  41.     srand (time(NULL));
  42.     while (1) {
  43.      
  44.         cin >> n >> p;
  45.         for (int i=0; i<n; i++){
  46.             cin >> pos0[i].x >> pos0[i].y >> pos1[i].x >> pos1[i].y;
  47.             map[pos0[i].x][pos0[i].y] = 1; //
  48.             map[pos1[i].x][pos1[i].y] = 1; //
  49.  
  50.         }
  51.        
  52.         while ( !namapie(pos1[p], dirs[p]) || !isavaiable(pos1[p], dirs[p]) ){
  53.             dirs[p]++; dirs[p]%=4;
  54.         }
  55.        
  56.         cout << kierunki[dirs[p]] << endl;
  57.     }
  58.        
  59.     return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement