Cod sursa(job #1030058)

Utilizator Paula-ElenaPaula-Elena Margarit Paula-Elena Data 15 noiembrie 2013 15:44:01
Problema Dtcsu Scor 0
Compilator cpp Status done
Runda FMI No Stress 4 Marime 1.08 kb
#include <fstream>
#include <cstring>
using namespace std;

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

const int MAXN = 276997;

int N, poz, Q, sol;
unsigned long long v[MAXN+5];
char s[70];

inline unsigned long long numar (int N)
{
    unsigned long long nr = 0, put = 1;

    for (int i=1; i<N; ++i)
        put *= 10;

    for (int i=0; i<N; ++i, put/=10)
        nr += put*(s[i]-'0');

    return nr;
}

inline int caut_bin (int val)
{
    int i, step;

    for (step=1; step<=N; step<<=1);
    for (i=1; step; step>>=1)
        if (i+step <= N && val >= v[i+step])
            i+= step;

    if (v[i] == val)
        return true;
    return false;
}

int main ()
{
    for (int i=0; i<MAXN; ++i)
    {
        fin.getline (s, 70);
        N = strlen (s);
        v[++poz] = numar(N);
    }
    N = poz;

    fin >> Q;
    for (int i=0; i<Q; ++i)
    {
        int aux;
        fin >> aux;
        if ( caut_bin (aux) )
            ++sol;
    }

    fout << sol;

    fin.close ();
    fout.close ();

    return 0;
}