[ create a new paste ] login | about

Link: http://codepad.org/b5WuuBya    [ raw code | output | fork ]

C, pasted on Feb 1:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define search(key, a, n) bsearch(key, a, n, sizeof(int), compare);
#define sort(a, n) qsort(a, n, sizeof(int), compare);
#define FOR(i, a, n) for(i = a; i < n; i++)
#define loop(i, n) FOR(i, 0, n)

void swap(int *a, int *b)
{
        int *temp;
        *temp = *a;
        *a = *b;
        *b = *temp;
}

int min(int a, int b)
{
        if(a > b)
                return b;
        return a;
}

int max(int a, int b)
{
        if(a > b)
                return a;
        return b;
}

int gcd(int a, int b)
{
        return(b == 0 ? a : gcd(b, a%b));
}

int compare (const void * a, const void * b)
{
        return ( *(int*)a - *(int*)b );
}

int main()
{
        int n, a[100000], b[100000], c[100000], counti[100001], countd[100001], maxi = 0, maxd = 0, i, j;
        scanf(" %d", &n);
        loop(i, n/2)
        {
                b[i] = i + 1;
                c[i] = n / 2 + n % 2 - i;
        }
        for(i = n/2; i < n; i ++)
        {
                c[i] = i - n / 2 + 1;
                b[i] = n - i;
        }
        /*loop(i, n)
                printf("%d ", b[i]);
        loop(i, n)
                printf("%d ", c[i]);*/
        loop(i, n)
        {
                scanf(" %d", a + i);
                if(a[i] >= b[i])
                {
                        counti[a[i] - b[i]] ++;
                        if(counti[maxi] < counti[a[i] - b[i]])
                                maxi = a[i] - b[i];
                }
        }
        //printf("%d %d\n", maxi, counti[maxi]);
        maxi = counti[maxi];
        loop(i, n)
        {
                if(a[i] >= c[i])
                {
                        countd[a[i] - c[i]] ++;
                        if(countd[maxd] < countd[a[i] - c[i]])
                                maxd = a[i] - c[i];
                }
        }
        //printf("%d %d\n", maxd, countd[maxd]);
        maxd = countd[maxd];
        maxi = max(maxi, maxd);
        printf("%d\n", n - maxi);
        return 0;
}


Output:
1
0


Create a new paste based on this one


Comments: