Informatică, întrebare adresată de yoyo2004, 9 ani în urmă

PROBLEMA BANCOMAT

La un bancomat se efectuează în fiecare zi două tipuri de operaţii: depuneri şi retrageri. Fiecare operaţie efectuată la bancomat este înregistrată sub forma unui cod format prin lipirea a două numere: suma tranzacţionată urmată de cifra 2 în cazul depunerii, respectiv de cifra 3 în cazul retragerii.
Dacă la o operaţie de retragere suma solicitată este mai mare decât cea existentă în acel moment de la bancomat, atunci respectiva operaţie nu se efectuează.
Cerinţă

Cunoscând suma S de bani care se găseşte la bancomat la începutul zilei, n - numărul de operaţii efectuate precum şi codurile operaţiilor, determinaţi care este suma existentă în bancomat la sfârşitul zilei.

Date de intrare

Fişierul bancomat.in conţine pe prima linie numărul natural S, reprezentând suma existentă în bancomat la începutul zilei. Pe cea de a doua linie se află numărul natural n, reprezentând numărul de operaţii efectuate în ziua curentă. Pe a treia linie se află n numere naturale separate prin spaţii, reprezentând în ordine codurile celor celor n operaţii efectuate.

Date de ieşire

Fişierul bancomat.out va conţine o singură linie pe care va fi scris un număr natural reprezentând suma existentă în bancomat la sfârşitul zilei.

Restricţii

• 0 < n ≤ 1000
• 0 < S ≤ 100000000
• Sumele tranzacţionate sunt între 1 şi 10000
Exemple

bancomat.in bancomat.out Explicaţii
1234
3
20002
40002
30003
4234
La începutul zilei s=1234
După prima tranzacţie s=1234+2000=3234
După a doua tranzacţie s=3234+4000=7234
După a treia tranzacţie s=7234-3000=4234
La sfârşitul zilei s=4234

Răspunsuri la întrebare

Răspuns de express
4
#include<fstream>
#include<algorithm>
using namespace std;

ifstream f("bancomat.in");
ofstream g("bancomat.out");
int n,s,x,i,u,s1;
int main()
{
    f>>s;
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>x;
        u=x%10;
        s1=x/10;
        if(u==3)
        {
            if(s>=s1) s=s-s1;
        }
        else s=s+s1;
    }
    g<<s;

    f.close();
    g.close();
    return 0;
}

Alte întrebări interesante