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:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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; | |
} |