Cod sursa(job #1758467)

Utilizator VintilaMMMVintila Mircea VintilaMMM Data 17 septembrie 2016 12:22:36
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 2.07 kb
#include <cstdio>
//#include <algoritm>
#include <vector>

FILE* in = fopen("hashuri.in", "r");
FILE* out = fopen("hashuri.out", "w");

using namespace std;

vector <long> v;
vector <vector<long>::iterator> rep;

short add (long x)
{
    if (v.empty() == false)
    {
        vector<long>::iterator i = v.begin();
        for ( ; i < v.end(); i++)
        {
            if (*i == x)
            {
                return 1;
            }
        }

        if (rep.empty() == false)
        {
            *rep.back() = x;
            rep.pop_back();
        }
        else
        {
            v.push_back(x);
        }
    }
    else
    {
        v.push_back(x);
    }


    return 0;
}

short del (long x)
{
    if (v.empty() == false)
    {
        vector<long>::iterator i = v.begin();
        for ( ; i < v.end(); i++)
        {
            if (*i == x)
            {
                *i = 0;
                rep.push_back(i);
                return 0;
            }
        }
    }

    return 1;
}

short check (long x)
{
    if (v.empty() == false)
    {
        vector<long>::const_iterator i = v.begin();
        for ( ; i < v.end(); i++)
        {
            if (*i == x)
            {
                return 1;
            }
        }
    }

    return 0;
}

int main()
{
    /* debug
     *add(3);
     *add(5);
     *add(10);
     *del(5);
     *add(15);
     *vector<long>::iterator i = v.begin();
     *for( ; i < v.end(); i++)
     *{
     *   fprintf(out, "%i ", *i);
     *}
     */

    long i = 0;
    short cmd = 0;
    long arg = 0;

    fscanf(in, "%li", &i);

    for (long y = 0; y < i; y++)
    {
        fscanf(in, "%hi %li", &cmd, &arg);

        switch (cmd)
        {
            case 1:
                add(arg);
                break;
            case 2:
                del(arg);
                break;
            case 3:
                fprintf(out, "%hi\n", check(arg));
                break;
            default:
                printf("ERROR: Unknown command %i!", cmd);
                break;
        }
    }

    fclose(in);
    fclose(out);

    return 0;
}