본문 바로가기

백준

27113 잠입

문제 정리

- (1, 1) -> (n, m) 이동

- 매초 상하좌우 이동 또는 안 움직

- 레이저는 최대 2개

- 자율 방법로봇, 센서에 닿아도 된다

 

로봇에 잡히면 안 된다

-> 최대한 빠르게 이동해야 한다

-> n*m번만에 이동해야 한다

-> 직접 한 칸씩 확인하면 100,000 * 10^9 시간 초과

 

- x는 무조건 오른쪽으로만 이동

- L, R 범위 확인해서 오른쪽으로 넘어갈 수 있는지 확인

 

 

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <functional>
#include <string>
#include <queue>
#include <deque>
#include <stack>
#include <set>
#include <map>
#include <cmath>
#include <cstring>
#include <bitset>
#include <stdio.h>
#include <math.h>
#include <sstream>
#include<cassert>
#include <climits>
#include <tuple>

#define xx first
#define yy second
#define all(x) (x).begin(), (x).end()
#define MAXV 987654321
#define FOR(i, n) for(int i = 0; i < (n); ++i)

using namespace std;
using i64 = long long int;
using ii = pair<int, int>;
using iis = pair<int, string>;
using ii64 = pair<i64, i64>;
using iii = tuple<int, int, int>;



int main() {
    int n, m;
    scanf("%d %d", &n, &m);
    
    // 나의 위치 x
    int x = 1;
    FOR(i, n-1) {
        int a;
        scanf("%d", &a);
        
        if (a == 0) continue;
        
        vector<pair<int, char>> v(a);
        FOR(i, a) {
            scanf("%d %c", &v[i].xx, &v[i].yy);
            if (v[i].yy == 'L') v[i].xx += 1;
            else v[i].xx -= 1;
        }
        
        if (a == 1) {
            if (v[0].yy == 'L') x = max(x, v[0].xx);
            else {
                if (v[0].xx < x) {
                    printf("NO\n");
                    return 0;
                }
            }
            continue;
        }
        
        if (v[0].yy == 'R' && v[1].yy == 'L') {
            if (v[0].xx < x) x = max(x, v[1].xx);
            continue;
        }
        
        for (auto& vi: v) {
            if (vi.yy == 'L') x = max(x, vi.xx);
            else {
                if (vi.xx < x) {
                    printf("NO\n");
                    return 0;
                }
            }
        }
    }

    if (m < x) printf("NO\n");
    else printf("YES\n");
    
	return 0;
}

'백준' 카테고리의 다른 글

28176 Maximum GCD  (0) 2023.09.17
11607 Grid  (0) 2023.09.16
22956 소나기  (0) 2023.08.12
10403 Intrepid climber  (0) 2023.08.12
24049 정원 (Easy)  (0) 2023.08.05