Algorithm


Problem Name: 2 AD-HOC - beecrowd | 2390

Problem Link: https://www.beecrowd.com.br/judge/en/problems/view/2390

Escada Rolante

 

Por OBI - Olimpíada Brasileira de Informática 2010 BR Brazil

Timelimit: 1

O Shopping Boas Compras - SBC, através de sua política ambiental, está preocupado com o consumo de energia e, resolveu trocar todas as escadas rolantes por modelos mais modernos, que se desligam caso ninguém esteja utilizando, poupando energia.

A nova escada rolante possui um sensor no início. Toda vez que ela está vazia e alguém passa pelo sensor, a escada começa a funcionar, parando de funcionar novamente após 10 segundos se ninguém mais passar pelo sensor. Estes 10 segundos representam o tempo suficiente para levar alguém de um nível ao outro.

Preocupados em saber exatamente quanto de energia o shopping está economizando, o gerente pediu sua ajuda. Como eles sabem qual era o consumo da escada rolante antiga, eles te pediram para calcular o tempo que a nova escada ficou funcionando.

Dados os instantes, em segundos, em que passaram pessoas pela escada rolante, você deve calcular quantos segundos ela ficou ligada.

 

Entrada

 

A primeira linha da entrada contém um inteiro N que indica o número de pessoas que o sensor detectou (1 ≤ N ≤ 1.000). As N linhas seguintes representam o instante em que a n-ésima pessoa passou pelo sensor e contém um inteiro T (0 ≤ T ≤ 10.000). Os tempos estão em ordem crescente, sem repetições.

 

Salida

 

Seu programa deve imprimir uma única linha, contendo o tempo que a escada rolante ficou ligada.

 

 

 

Exemplos de Entrada Exemplos de Saída

3

0

10

20

30

 

Code Examples

#1 Code Example with C++ Programming

Code - C++ Programming


#include <cstdio>
#include  <queue >
using namespace std;
int main() {
    int n, resposta = 0, desligar = 0, ligado = 0;
    queue < int> fila;
    scanf("%d", &n);
    for (int i = 0; i  <  n; i++) {
        int davez;
        scanf("%d", &davez);
        fila.push(davez);
    }
    for (int momento = 0; momento  < = 100000000; momento++) {
        int alguem = 0;
        if (fila.empty() && momento > desligar) break;
        while (fila.front() == momento) {
            fila.pop();
            alguem++;
        }
        if (alguem != 0) desligar = momento + 10;
        if (desligar > momento)
            ligado = 1;
        else
            ligado = 0;
        resposta += ligado;
    }
    printf("%d\n", resposta);
    return 0;
}
Copy The Code & Try With Live Editor

Input

x
+
cmd
3
0
10
20

Output

x
+
cmd
30
Advertisements

Demonstration


Previous
#2389 Beecrowd Online Judge Solution 2389 Floresta Solution in C, C++, Java, Js and Python
Next
#2391 Beecrowd Online Judge Solution 2391 Progressões Aritméticas Solution in C, C++, Java, Js and Python