#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;
 
typedef struct node
{
    int D;
    int R;
    int G;
}node;
 
int N, L;
node inform[110];
int dist;
int time;
 
int main(void)
{
//    freopen("B2980_input.txt", "r", stdin);
    
    cin >> N >> L;
    
    for(int i = 1; i <= N; i++)
    {
        int D, R, G;
        cin >> D >> R >> G;
        
        inform[i].D = D;
        inform[i].R = R;
        inform[i].G = G;
    }
    
    int idx = 1;
    while(dist != L)
    {
        if(dist == inform[idx].D)
        {
            // 빨간불 + 초록불의 신호등 주기를 통한 나머지 계산을 통해 결과 도출     
            // 빨간불이면 끝날때까지 계속 기다려야됨 
            while(0 <= time % (inform[idx].R+inform[idx].G) && time % (inform[idx].R+inform[idx].G) < inform[idx].R)
            {
                time++;
            } 
            
            // 빨간불 끝나마자마자 초록불 -> 갈 수 있음 
//            if(inform[idx].R <= time % (inform[idx].R+inform[idx].G) && time % (inform[idx].R+inform[idx].G) < inform[idx].R+inform[idx].G)
//            {
                dist++;
                time++;        
//            }
            
            // 신호등 인덱스 증가 
            idx++;
        }
        else
        {
            dist++;
            time++;
        }    
    }
    
    cout << time;
    
    return 0;
}
cs

+ Recent posts