codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#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; }
Private
[
?
]
Run code
Submit