Cod sursă (job #285133)

Utilizator avatar Therevengerking Surani Adrian Therevengerking IP ascuns
Problemă Bizar (clasele 9-10) Compilator cpp | 0,92 kb
Rundă Arhiva de probleme Status evaluat
Dată 25 feb. 2017 12:12:14 Scor 90
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("bizar.in");
ofstream fout("bizar.out");
string s,act;
int i=0,nr,r;
int eval(int poz)
{
    int val;
    vector<int>v;
    while(i<s.size() && s[i]!=')')
    {
        val=0;
        while(s[i]!='(' && s[i]!=')' && s[i]!=',')
        {val=val*10+s[i]-'0';++i;}
        if(s[i]!='(')v.push_back(val);
        else
        {
            while(s[i]=='(')
            {
                i++;
                val=eval(val);v.push_back(val);
            }
        }
        if(s[i]!=')')++i;
    }++i;
    poz=poz%v.size();
    if(poz)return v[poz-1];
    return v[v.size()-1];
}
int main()
{
    getline(fin,act);nr=0;
    for(int i=0;i<act.size();++i)if(act[i]!=' ')s.push_back(act[i]);
    while(s[i]!='(')
    {nr=nr*10+s[i]-'0';++i;}
    ++i;
    while(s[i-1]=='('){nr=eval(nr);++i;}
    fout<<nr;
    return 0;
}