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 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
0
10
20
Output