실험실
  • [백준] 20867. Rulltrappa - 파이썬
    2024년 08월 29일 19시 15분 14초에 업로드 된 글입니다.
    작성자: B1NK
    728x90
    • 백준 링크: 20867번: Rulltrappa
    • solved.ac 난이도: 브론즈 IV
    • 시간 제한: 1초
    • 메모리 제한: 1024MB

    문제

    Paulina Osqulda (Osqulda är en studentikos benämning på teknologer som studerar vid Kungliga Tekniska högskolan i Stockholm, se https://sv.wikipedia.org/wiki/Osquar_och_Osqulda.) pluggar på KTH i Stockholm, och åker varje morgon till skolan via tunnelbanan. När hon kommer fram till sin tunnelbanestation måste hon åka upp längs en rulltrappa för att komma ut.

    I rulltrappan bildas det ofta två olika köer. På den högra sidan av trappan ställer sig folk som vill stå still i rulltrappan, medan man ställer sig på den vänstra sidan om man föredrar att gå i rulltrappan (för att komma upp snabbare).

    Paulina har märkt att det oftast bildas en jättelång kö till den vänstra sidan av rulltrappan, eftersom alla är så stressade till jobbet och vill kunna gå snabbt upp för rulltrappan. På sista tiden har hon funderat på om det kanske rentav skulle gå snabbare att istället välja den högra kön, eftersom kön där ofta är kortare.

    Rulltrappan är totalt $M$ trappsteg lång. Om man står i rulltrappan färdas man $S$ trappsteg per sekund uppåt i rulltrappan. Om man istället går i rulltrappan färdas man $G$ trappsteg per sekund uppåt.

    Totalt kan $A$ personer per sekund börja gå i rulltrappan ur den vänstra kön, medan $B$ personer per sekund kan ställa sig på rulltrappan ur den högra kön. Detta betyder att i början av förloppet går en person på rulltrappan. Innan en ny person går på rulltrappan måste denna vänta $\frac{1}{A}$ (resp $\frac{1}{B}$ sekunder) för att kunna gå på rulltrappan.

    Den vänstra kön är för närvarande $L$ personer lång, och den högra är $R$ personer lång.

    Hjälp Paulina avgöra vilken kö hon ska ställa sig i, för att så snabbt som möjligt nå rulltrappans topp.

    해석

    스톡홀름 왕립공과대학에 재학 중인 폴리나 오스쿨다(오스쿨다는 스톡홀름 왕립공과대학에서 공부하는 기술자들의 학생 별명, https://sv.wikipedia.org/wiki/Osquar_och_Osqulda 참조)는 매일 아침 지하철로 학교에 등교합니다. 지하철 역에 도착하면 에스컬레이터를 타고 내려야 합니다.

    에스컬레이터에는 종종 두 개의 다른 대기열이 형성됩니다. 계단 오른쪽에는 에스컬레이터에서 가만히 서 있으려는 사람들이 줄을 서고, 왼쪽에는 더 빨리 올라가기 위해 걸어서 올라가려는 사람들이 줄을 섭니다.

    폴리나는 사람들이 출근이 너무 급해서 에스컬레이터를 빨리 올라가고 싶어 하기 때문에 에스컬레이터 왼쪽에 줄이 매우 길게 늘어선다는 사실을 알게 되었습니다. 최근에는 줄이 더 짧은 오른쪽 줄을 선택하는 것이 더 빠를 수 있지 않을까 고민하고 있습니다.

    에스컬레이터의 총 계단 길이는 $M$입니다. 에스컬레이터에 서 있으면 초당 $S$ 보를 에스컬레이터 위로 이동합니다. 대신 에스컬레이터를 걸어 올라가면 초당 $G$ 보를 올라갑니다.

    총 초당 $A$명의 사람들이 왼쪽 대기열에서 에스컬레이터를 걷기 시작하고, 초당 $B$명의 사람들이 오른쪽 대기열에서 에스컬레이터를 탈 수 있습니다. 즉, 프로세스가 시작될 때 한 사람이 에스컬레이터에 탑승합니다. 새로운 사람이 에스컬레이터를 밟기 전에 이 사람은 $\frac{1}{A}$ (또는 $\frac{1}{B}$ 초)를 기다려야 에스컬레이터를 밟을 수 있습니다.

    현재 왼쪽 대기열의 길이는 $L$명이고, 오른쪽 대기열의 길이는 $R$명입니다.

    폴리나가 에스컬레이터 꼭대기에 최대한 빨리 도착하기 위해 어느 대기열에 합류할지 결정하도록 도와주세요.

    입력

    Den första raden i indatat består av heltalen $M, S, G$ som är beskrivna i uppgiften. Det gäller att $30 \le M \le 200$, $1 \le S \le G \le M$.

    Nästa rad innehåller decimaltalen $A, B$ som är beskrivna i uppgiften. Det gäller att $0.1 \le A, B \le 1$.

    Den sista raden innehåller heltalen $L, R$ som är beskrivna i uppgiften. Det gäller att $0 \le L, R \le 100$.

    해석

    입력의 첫 번째 줄은 작업에 설명된 정수 $M, S, G$로 구성됩니다. 이 때, $30 \le M \le 200$, $1 \le S \le G \le M$입니다.

    다음 행에는 과제에 설명된 십진수 $A, B$가 들어 있습니다. 이 때, $0.1 \le A, B \le 1$입니다.

    마지막 행에는 과제에 설명된 정수 $L, R$이 들어 있습니다. $0 \le L, R \le 100$은 참입니다.

    출력

    Skriv ut latmask om det snabbaste alternativet är att välja den högra kön och stå i rulltrappan, eller friskus om det snabbaste alternativet är att välja den vänstra kön och gå i rulltrappan.

    Det är garanterat att tiden det tar för Paulina att åka upp för rulltrappan skiljer sig med minst 1 sekund mellan de två köerna, så du behöver aldrig bry dig om fallet när båda alternativen är lika snabba.

    해석

    가장 빠른 옵션이 오른쪽 대기열을 선택하고 에스컬레이터에 서 있는 것이라면 latmask을, 가장 빠른 옵션이 왼쪽 대기열을 선택하고 에스컬레이터를 올라가는 것이라면 friskus를 인쇄하세요.

    폴리나가 에스컬레이터를 올라가는 데 걸리는 시간은 두 대기열 간에 최소 1초 이상 차이가 나므로 두 옵션이 똑같이 빠르다고 해도 걱정할 필요가 없습니다.

    코드

    언어: 파이썬

    m, s, g = map(float, input().split())
    a, b = map(float, input().split())
    l, r = map(float, input().split())
    
    x = l / a
    y = r / b
    
    x += m / g + 1 if m % g else m / g
    y += m / s + 1 if m % s else m / s
    
    print("friskus" if x < y else "latmask")
    728x90
    댓글