Solução Escada Rolante

Solução por Rogério Júnior

Quando alguém entra na escada, temos duas possibilidades: ou ela estava funcionando, ou ela não estava. Para cada pessoa que entra, o tempo de funcionamento que ela vai adicionar à escada por ter entrado será contabilizado na variável tempo. Além disso, vamos guardar a variável fim, que guarda o instante em que a última pessoa chega ao topo da escada, para mantermos controle de quando ela está funcionando. Para cada pessoa, vamos ler o instante t em que ela entra na escada. Se a pessoa entra enquanto a escada está parada, ou seja, após a última pessoa ter subido ao topo (if(t>=fim)), então ela terá que funcionar por 10 segundos para levar a pessoa até o topo da escada, logo, executamos o comando "tempo+=10;". Caso contrário, vamos adicionar a tempo apenas a diferença de tempo entre o instante em que a escada ia parar antes (fim) e o instante em quem ela irá parar agora (t+10), ou seja, quantos segundos a mais ela levará para deixar a pessoa atual no topo ("tempo+=t+10-fim;"). Após cada leitura, vamos atualizar o momento em que a escada irá parar, que será 10 segundos após a entrada da última pessoa (fim=t+10;). Após a leitura da entrada, basta imprimir o valor salvo em tempo, seguido da quebra de linha. Segue o código para melhor entendimento:


#include <cstdio>
int n, tempo, fim; // declaro as variáveies n, tempo e fim
int main(){
scanf("%d", &n); // leio o valor de n
for(int i=1; i<=n; i++){ // para cada leitura
int t;
scanf("%d", &t); // leio o instante de entrada
// se alguém entrou ena escada enquanto ela não estava funcionado
if(t>=fim) tempo+=10; // aadiciono todos os 10 segundos que a escada levará para subir
// caso contrário, alguém entre enquanto a escada funcionava
else tempo+=t+10-fim; // adiciono apenas o tempo adicional que a escada levará para subir a nova pessoa
fim=t+10; // guardo o mometo que a escada vai parar
}
printf("%d\n", tempo); // imprimo o valor de n
return 0;
}

view raw

escada.cpp

hosted with ❤ by GitHub