Cod sursa(job #2106849)

Utilizator alex.sirbuSirbu Alexandru alex.sirbu Data 16 ianuarie 2018 12:36:35
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.64 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("hashuri.in");
ofstream fout("hashuri.out");

/*int a[1000000];

void add(int x, int n)
{
    int i;
    bool ok=true;
    for(i=1; i<=n && a[i]!=0; i++)
    {
        if(a[i]==x) {ok=false; break;}
    }
    if(ok) a[i]=x;
}

void deletex(int x, int n)
{
    for(int i=1; i<=n && a[i]!=0; i++)
    {
        if(a[i]==x) {a[i]=-1; break;}
    }
}

bool findx(int x, int n)
{
    for(int i=1; i<=n && a[i]!=0; i++)
    {
        if(a[i]==x) return true;
    }
    return false;
}

void read()
{
    int n;
    int x;
    fin>>n;
    for(int i=1; i<=n; i++)
    {
        int op;
        fin>>op>>x;
        switch(op)
        {
        case 1:
            //int x;
            //fin>>x;
            add(x, n);
            break;
        case 2:
            //fin>>x;
            deletex(x, n);
            break;
        case 3:
            //fin>>x;
            fout<<findx(x, n)<<'\n';
        }
    }
}*/

int a[1000000];

bool findx(int x, int i, int q[], int w[])
{
    bool ok1=false, ok2=false;
    for(int j=i-1; j>=1; j--)
    {
        if(q[j]==1 && w[j]==x) {ok1=true; break;}
        else if(q[j]==2 && w[j]==x) {ok2=true; break;}
    }
    if(ok1 && !ok2) return true;
    return false;
}

void read()
{
    int n;
    fin>>n;
    int q[n], w[n];
    int i=1;
    while(fin>>q[i]>>w[i])
        i++;
    /*for(int i=1; i<=n; i++)
        fout<<q[i]<<" "<<w[i]<<'\n';*/
    for(int i=1; i<=n; i++)
    {
        if(q[i]==3) fout<<findx(w[i], i, q, w)<<'\n';
    }
}

int main()
{
    read();
}