Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <cstdlib>
- using namespace std;
- namespace DIR {static const int L=0, U=1, R=2, D=3;};
- static char* kierunki[4] = {"LEFT","UP","RIGHT","DOWN"};
- struct point{int x, y;};
- int n, p;
- int map[30][20] = {0};
- int dirs[4] = {DIR::L}; // lewo]
- bool namapie(point pkt, int dir){
- switch(dir){
- case (DIR::L): if (pkt.x==0) return false; break;
- case (DIR::U): if (pkt.y==0) return false; break;
- case (DIR::R): if (pkt.x==29) return false; break;
- case (DIR::D): if (pkt.y==19) return false; break;
- }
- return true;
- }
- bool isavaiable(point pkt, int dir){
- switch(dir){
- case (DIR::L): if (map[pkt.x-1][pkt.y]==0) return true; break;
- case (DIR::U): if (map[pkt.x][pkt.y-1]==0) return true; break;
- case (DIR::R): if (map[pkt.x+1][pkt.y]==0) return true; break;
- case (DIR::D): if (map[pkt.x][pkt.y+1]==0) return true; break;
- }
- return false;
- }
- int calcdir(point p1, point p0){
- if (p1.x-p0.x == -1) return DIR::L; else
- if (p1.y-p0.y == -1) return DIR::U; else
- if (p1.x-p0.x == 1) return DIR::R; else
- if (p1.y-p0.y == 1) return DIR::D; else
- return 0;
- }
- int main(){
- point pos0[4];
- point pos1[4];
- srand (time(NULL));
- while (1) {
- cin >> n >> p;
- for (int i=0; i<n; i++){
- cin >> pos0[i].x >> pos0[i].y >> pos1[i].x >> pos1[i].y;
- map[pos0[i].x][pos0[i].y] = 1; //
- map[pos1[i].x][pos1[i].y] = 1; //
- }
- while ( !namapie(pos1[p], dirs[p]) || !isavaiable(pos1[p], dirs[p]) ){
- dirs[p]++; dirs[p]%=4;
- }
- cout << kierunki[dirs[p]] << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement