Cod sursa(job #2143890)

Utilizator GeorgeCalinPetruta George-Calin GeorgeCalin Data 26 februarie 2018 13:00:00
Problema Zeap Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.93 kb
#include <fstream>
#define nmax 300002
using namespace std;
ifstream fin("zeap.in");
ofstream fout("zeap.out");

int v[nmax];

int main()
{
    char c,s;
    int stop=0;
    while(!fin.eof())
    {
        c=fin.get();
        if(c=='M')
        {
            c=fin.get();
            if(c=='A')
            {
                if(stop<2)
                {
                    fout<<-1<<"\n";
                }
                else{
                int mi=2000000000;
                int ma=-2000000000;
                for(int i=1;i<=stop;i++)
                {
                    if(v[i]>ma)
                        ma=v[i];
                    if(v[i]<mi)
                        mi=v[i];
                }
                fout<<ma-mi<<"\n";
                }
            }
            else
            {
                if(stop<2)
                {
                    fout<<-1<<"\n";
                }
                else{
                int dif=120402324;
                for(int i=1;i<=stop;i++)
                {
                    for(int j=i+1;j<=stop;j++)
                    {
                        int k=v[i]-v[j];
                        if(k<0)
                            k*=-1;
                        if(k<dif)
                            dif=k;
                    }
                }
                fout<<dif<<"\n";
                }
            }
            c=fin.get();
            c=fin.get();
        }
        else
        {
            char ser=c;
            c=fin.get();
            c=fin.get();
            if(fin.eof())
                break;
            int nr=0;
            while(c>='0'&&c<='9')
            {
                nr=nr*10+c-'0';
                c=fin.get();
            }
            if(ser=='I')
            {
                v[++stop]=nr;
            }
            else
            {
                if(ser=='S')
                {
                    int loc=0;
                    for(int i=1;i<=stop;i++)
                    {
                        if(v[i]==nr)
                        {
                            loc=i;
                            break;
                        }
                    }
                    if(loc)
                    {
                        for(int i=stop-1;i>=loc;i--)
                            v[i]=v[i+1];
                        stop--;
                    }
                    else
                        fout<<-1<<"\n";
                }
                else
                {
                    int loc=0;
                    for(int i=1;i<=stop;i++)
                    {
                        if(v[i]==nr)
                        {
                            loc=1;
                            break;
                        }
                    }
                    fout<<loc<<"\n";
                }
            }
        }
        s=c;
    }
    return 0;
}