Algorithm
Problem Name: 2 AD-HOC - beecrowd | 2434
Problem Link: https://www.beecrowd.com.br/judge/en/problems/view/2434
Saldo do Vovô
Por OBI - Olimpíada Brasileira de Informática 2013 Brazil
Timelimit: 1
Vovô João tem uma banca de jornais; ele tem muitos clientes, e diariamente recebe muito dinheiro, mas também faz muitos pagamentos para manter o seu estoque de jornais e revistas. Todo dia ele vai ao banco realizar um depósito ou uma retirada de dinheiro. Em alguns dias, o saldo de sua conta no banco fica negativo, mas Vovô João tem um acordo com o banco que garante que ele somente é cobrado se o saldo for menor do que um valor pré-estabelecido.
Dada a movimentação diária da conta do banco do Vovô João, você deve escrever um programa que calcule o menor saldo da conta, no período dado.
Entrada
A primeira linha da entrada contém dois números inteiros N (1 ≤ N ≤ 30) e S (−103 ≤ S ≤ 103) que indicam respectivamente o número de dias do período de interesse e o saldo da conta no início do período. Cada uma das N linhas seguintes contém um número inteiro indicando a movimentação de um dia (−103 ≤ cada movimentação ≤ 103), (valor positivo no caso de depósito, valor negativo no caso de retirada). A movimentação é dada para um período de N dias consecutivos: a primeira das N linhas corresponde ao primeiro dia do período de interesse, a segunda linha corresponde ao segundo dia, e assim por diante.
Saída
Seu programa deve imprimir uma única linha, contendo um único número inteiro, o menor valor de saldo da conta no período dado.
Exemplos de Entrada | Exemplos de Saída |
3 1000 100 -800 50 |
300 |
Code Examples
#1 Code Example with C Programming
Code -
C Programming
#include <stdio.h>
#include <string.h>
int main (void)
{
unsigned short numDias, i;
int saldoInicial, menorSaldo, movimentacao;
scanf("%hu %d", &numDias, &saldoInicial);
menorSaldo = saldoInicial;
for (i = 0; i < numDias; i++)
{
scanf("%d", &movimentacao);
saldoInicial += movimentacao;
if (saldoInicial < menorSaldo)
menorSaldo = saldoInicial;
}
printf("%d\n", menorSaldo);
}
Copy The Code &
Try With Live Editor
Input
100
-800
50
Output
#2 Code Example with C++ Programming
Code -
C++ Programming
#include <cstdio>
int min(int x, int y) {
if (x < y) return x;
return y;
}
int main() {
int n, atual, menor;
scanf("%d %d", &n, &atual);
menor = atual;
while (n--) {
int davez;
scanf("%d", &davez);
atual += davez;
menor = min(atual, menor);
}
printf("%d\n", menor);
return 0;
}
Copy The Code &
Try With Live Editor
Input
100
-800
50
Output
#3 Code Example with Javascript Programming
Code -
Javascript Programming
const { readFileSync } = require("fs")
const [days, openingBalance, ...transations] = readFileSync("/dev/stdin", "utf8").split(/\s/)
function getMinimunSaleFromHistory(/** @type {number[]} */[...values], initialValue = 0) {
for (var index = 0, sale = initialValue, minSaleValueOnHistory = initialValue; index < values.length; index++) {
sale += values[index]
minSaleValueOnHistory = sale < minSaleValueOnHistory ? sale : minSaleValueOnHistory
}
return minSaleValueOnHistory
}
function main() {
const transationsValues = transations.slice(0, +days).map(num => Number.parseInt(num, 10))
const minimunSaleValueOnHistory = getMinimunSaleFromHistory(transationsValues, +openingBalance)
console.log(minimunSaleValueOnHistory)
}
main()
Copy The Code &
Try With Live Editor