URAL_1025
排个序扫描一下即可。
#include<stdio.h> #include<string.h> #include<stdlib.h> #define MAXD 110 int K, a[MAXD]; int cmp(const void *_p, const void *_q) { int *p = (int *)_p, *q = (int *)_q; return *p < *q ? -1 : 1; } void init() { int i; for(i = 0; i < K; i ++) scanf("%d", &a[i]); qsort(a, K, sizeof(a[0]), cmp); } void solve() { int i, ans = 0; for(i = 0; i < ((K + 1) >> 1); i ++) ans += (a[i] >> 1) + 1; printf("%d\n", ans); } int main() { while(scanf("%d", &K) == 1) { init(); solve(); } return 0; }