Moderator: Board moderators
code removed after AC :)
Aced
5
1
3
7
10
12
6
3
4
5
6
10
12
0Case 1:
Closest sum to 3 is 4.
Closest sum to 4 is 4.
Closest sum to 5 is 4.
Closest sum to 6 is 4.
Closest sum to 10 is 10.
Closest sum to 12 is 11.3
3
5
5
1
10
0Case 1:
Closest sum to 10 is 8.ACed...
/*
* 10487 closest sum
* submission 1 RE 2 RE 3 RE 4 RE 5 WA
* coded at 8:09am, april 13, 2006
*
*/
#include <stdio.h>
#include <stdlib.h>
long long sum[1000000];
long long myabs(long long x) {
return (x>0) ? x : (-1*x);
}
int comp(const void *a, const void *b) {
long long *x=(long long *)a;
long long *y=(long long *)b;
if(*x>*y) return 1;
if(*x<*y) return -1;
else return 0;
}
long long search(long long num,long long range) {
long long i;
long long min=100000000;
long long ans;
for(i=0;i<=range;i++) {
if(myabs(num-sum[i])<min) {
min=myabs(num - sum[i]);
ans=sum[i];
}else if(myabs(num-sum[i])>min ) break;
}
return ans;
}
int main() {
long long input[1005];
long long n,m;
long long i,j,k;
long long query;
long long cases=0;
while(scanf("%d",&n)==1) {
if(n==0) break;
for(i=0;i<n;i++) {
scanf("%d",&input[i]);
}
k=-1;
for(i=0;i<n;i++) {
for(j=i+1;j<n;j++) {
if(input[i]==input[j]) continue;
sum[++k]= input[i] + input[j];
}
}
qsort(sum,k+1,sizeof(sum[0]),comp);
scanf("%d",&m);
printf("Case %d:\n",++cases);
for(i=0;i<m;i++) {
scanf("%d",&query);
printf("Closest sum to %d is %d.\n",query,search(query,k));
}
}
return 0;
}

Users browsing this forum: No registered users and 1 guest