914 - Jumping Champion

#include<bits/stdc++.h>
using namespace std;
#define MAX 1000010
int prime[MAX];
int diff[MAX];
void sieve()
{
    int i,j,k;
    memset(prime,0,sizeof(prime));
    prime[0]=1;
    prime[1]=1;
    k=sqrt(MAX);
    for(i=4; i<MAX; i+=2)
    {
        prime[i]=1;
    }
    for(i=3; i<k; i+=2)
        if(!prime[i])
        {
            for(j=i*i; j<MAX; j+=i+i)
            {
                if(!prime[j])
                {
                    prime[j]=1;
                }
            }
        }
}

int main()
{
    int i,j,k,maximum,t,up,low,dif,d,temp;
    sieve();
    scanf("%d", &t);
    int  U, L;
    while(t--)
    {
        scanf("%d %d", &L, &U);
        for(i=L; i<=U; i++)
        {
            if(!prime[i])
            {
                low = i;
                break;
            }
        }
        memset(diff,0,sizeof(diff));
        for(i=low+1; i<=U; i++)
        {
            if(!prime[i])
            {
                up = i;
                d = up - low;
                diff[d]++;
                low= up;
            }
        }
        dif=0;
        for(i=1; i<150; i++)
        {
            if(diff[i]==dif)
            {
                temp=0;
            }
            else if(diff[i]>dif)
            {
                dif= diff[i];
                maximum=i;
                temp=1;
            }
        }
        if(temp)
        {
            printf("The jumping champion is %d\n", maximum);
        }
        else
        {
            printf("No jumping champion\n");
        }
    }
    return 0;
}

0 comments: (+add yours?)