Cod sursă (job #609375)

Utilizator avatar AffectiveSmile2 Mihnea Matea AffectiveSmile2 IP ascuns
Problemă Bizar (clasele 9-10) Compilator cpp-32 | 1,29 kb
Rundă Arhiva de probleme Status evaluat
Dată 10 oct. 2021 12:26:03 Scor 100
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("bizar.in");
ofstream g("bizar.out");
int stiva[100010],lungime,k,paranteze[100010],kp;
char expresie[100010];
int main()
{
    int i,numar,inceput;
    f.getline(expresie,100001);
    lungime=strlen(expresie);
    k=0;
    kp=0;
    i=0;
    while(i<lungime)
    {
        if(expresie[i]>='0'&&expresie[i]<='9')
        {
            numar=0;
            while(expresie[i]>='0'&&expresie[i]<='9')
            {
                numar=numar*10+expresie[i]-48;
                i++;
            }
            k++;
            stiva[k]=numar;
        }
        if(expresie[i]=='(')
        {
            kp++;
            paranteze[kp]=k+1;
            i++;
        }
        if(expresie[i]==')')
        {
            inceput=paranteze[kp];
            kp--;
            if(stiva[inceput-1]%(k-inceput+1)==0)
            {
                stiva[inceput-1]=stiva[k];
                k=inceput-1;
            }
            else
            {
                stiva[inceput-1]=stiva[inceput+(stiva[inceput-1]%(k-inceput+1))-1];
                k=inceput-1;
            }
            i++;
        }
        if(expresie[i]==','||expresie[i]==' ')
            i++;
    }
    g<<stiva[1];
}