Cod sursa(job #661747)

Utilizator dutzulBodnariuc Dan Alexandru dutzul Data 15 ianuarie 2012 01:04:04
Problema Pascal Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <fstream>
#define l 50
#define ex M[X][Y]
using namespace std;
ifstream f("mxl.in");
ofstream g("mxl.out");
int i,j,n,m,k,a[l][l],x,y,p,q;
char cx,c1;
string M[l][l];
int bom(char x)
{
    if (x>='0'&&x<='9') return 1;
    if (x==':') return 2;
    if (x=='+') return 3;
}
int rez(int X,int Y)
{
    int poz=0,en=ex.length(),s=0,nr;
    if (a[X][Y]!=0) return a[X][Y];

    while (poz<en) if (bom(ex[poz])==3||poz==0)
        {
            nr=0;
            for(poz++; poz<en||bom(ex[poz])==2||bom(ex[poz])==3; poz++)
                nr=nr*10+(ex[poz]-'0');

            if (poz>=en||bom(ex[poz])==3)
            {
                s+=nr,poz++;
                continue;
            }
            if (bom(ex[poz])==2)
            {
                c1=nr,nr=0;
                for(poz++; poz<en||bom(ex[poz])==2||bom(ex[poz])==3; poz++)
                    nr=nr*10+(ex[poz]-'0');
                s+=rez(c1,nr);
            }
        }
    a[X][Y]=s;
    return s;
}
int main()
{
    f>>n>>k;
    for(i=1; i<=k; i++)
    {
        f>>x>>y>>cx>>c1;
        if (c1!='=') a[x][y]=c1-'0';
        else f>>M[x][y];
    }

    for(p=1; p<=n; p++)
        for(q=1; q<=m; q++) a[p][q]=rez(i,j);


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