Cod sursa(job #1947408)

Utilizator DysKodeTurturica Razvan DysKode Data 30 martie 2017 22:21:05
Problema Componente biconexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.96 kb
#include <bits/stdc++.h>
#define ll long long
#define f first
#define s second

using namespace std;

long long i,j,n,m,a,b,x,y,ans,sol[200010],v[200010],k,q,l;
char c;
string s1,s2;
set< long long > sit,mip;

int main()
{
    #ifndef ONLINE_JUDGE
        ifstream cin(".in");
    #endif
        ios_base::sync_with_stdio(false);
    cin.tie( 0 );
    cin>>b>>q>>l>>m;
    if( b > l )
    {
        cout<<0;
        return 0;
    }
    for( i = 1 ; i <= m ; i++ )
    {
        cin>>x;
        sit.insert( x );
    }
    if( q == 0 )
    {
        if( sit.find( 0 ) == sit.end() )
        {
            cout<<"inf";
        }
        else
        {
            if( sit.find( b ) != sit.end() )
                cout<<0;
            else
                cout<<1;
        }
        return 0;
    }
    if( q == 1 )
    {
        if( sit.find( b ) == sit.end() )
            cout<<"inf";
        else
            cout<<0;
        return 0;
    }
    if( q == -1 )
    {
        if( sit.find( b ) == sit.end() || sit.find( -b ) == sit.end() )
            cout<<"inf";
        else
            cout<<0;
            return 0;
    }
    if( b == 0 )
    {
        if( sit.find( 0 ) == sit.end() )
            cout<<"inf";
        else
            cout<<0;
            return 0;
    }
    if( b == 1 )
    {
        if( sit.find( q ) == sit.end() )
            cout<<"inf";
        else if( sit.find( 1 ) == sit.end() )
            cout<<1;
        else
            cout<<0;
        return 0;
    }
    if( b == -1 )
    {
        if( sit.find( q ) == sit.end() || sit.find( -q ) == sit.end() )
            cout<<"inf";
        else if( sit.find( -1 ) == sit.end() )
            cout<<1;
        else
            cout<<0;
            return 0;
    }
    for( i = b ; abs( i ) <= l ; i *= q )
    {
        if( sit.find( i ) == sit.end() )
            ++ans;
        mip.insert( i );
    }
        cout<<ans;
return 0;
}