Cod sursa(job #1038763)

Utilizator romircea2010FMI Trifan Mircea Mihai romircea2010 Data 21 noiembrie 2013 22:37:33
Problema Dtcsu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.99 kb
#include <iostream>
#include <cstdio>
#include <bitset>
#define NR2 10
#define NR 276997
#define MOD1 (1<<19)
#define MOD2 666013
#define MOD3 666019
#define MOD4 123457
#define MOD5 1000003
#define MOD6 777769
#define MOD7 123911
#define MOD8 1111151
#define MOD9 200003
#define MOD10 300007

using namespace std;

bitset <MOD1> H1;
bitset <MOD2> H2;
bitset <MOD3> H3;
bitset <MOD4> H4;
bitset <MOD5> H5;
bitset <MOD6> H6;
bitset <MOD7> H7;
bitset <MOD8> H8;
bitset <MOD9> H9;
bitset <MOD10> H10;

inline bool Good(const long long x)
{
    if (!H1[x&MOD1] || !H2[x%MOD2] || !H3[x%MOD3] || !H4[x%MOD4] || !H5[x%MOD5] || !H6[x%MOD6] || !H7[x%MOD7] || !H8[x%MOD8] || !H9[x%MOD9] || !H10[x%MOD10])
        return false;
    return true;
}

int main()
{
    char ch[500000];
    freopen("dtcsu.in", "r", stdin);
    for (int i = 1; i<=NR; ++i)
    {
        gets(ch);
        long long x = 0;
        int ind = 0;
        while (ch[ind])
        {
            x = 0LL;
            while ('0' <= ch[ind] && ch[ind] <= '9')
            {
                x = x*10 + ch[ind] - '0';
                ++ind;
            }
            H1[x&MOD1] = true;
            H2[x%MOD2] = true;
            H3[x%MOD3] = true;
            H4[x%MOD4] = true;
            H5[x%MOD5] = true;
            H6[x%MOD6] = true;
            H7[x%MOD7] = true;
            H8[x%MOD8] = true;
            H9[x%MOD9] = true;
            H10[x%MOD10] = true;
            while (('0' > ch[ind] || ch[ind] > '9') && ch[ind])
                ++ind;
        }
    }
    gets(ch);
    int Q = 0;
    int i;
    for (i=0; ch[i]; ++i)
        Q = Q*10 + ch[i] - '0';

    int answer = 0;
    while (Q--)
    {
        gets(ch);
        long long x = 0LL;
        int i;
        for (i=0; ch[i]; ++i)
            x = x*10 + ch[i] - '0';
        if (Good(x))
            ++answer;
    }

    FILE *g = fopen("dtcsu.out", "w");
    fprintf(g, "%d\n", answer);
    fclose(g);


    return 0;
}