| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Why WA?#include <cstdio>
#include <algorithm>
int cmp(const void* p1,const void * p2)
{
return *((long*)p1)-*((long*)p2);
}
long s[1001];
int BinarySearch(const long A[], long key, int N);
int main()
{
long n,i,j,k,tmp;
bool flag;
while(scanf("%d",&n) != EOF)
{
if(n == 0)
break;
for(i = 0;i < n; i++)
scanf("%d",&s[i]);
qsort((void*)&s[0],n,sizeof(s[0]),cmp);
flag = false;
for(i = n-1;i >= 3; i--)
{
for(j = i - 1;j >= 2; j--)
{
if((s[i] - s[j]) < s[0])
continue;
for(k = j - 1;k >= 1; k--)
{
tmp = s[i] - s[j] - s[k];
if(BinarySearch(s,tmp,n) != -1)
{
flag = true;
printf("%d\n",s[i]);
//printf("%d = %d + %d + %d\n",s[i],s[j],s[k],tmp);
//printf("%d %d %d %d\n",i,j,k,BinarySearch(s,tmp,n));
break;
}
}
if(flag)
break;
}
if(flag)
break;
}
if(!flag)
printf("no solution\n");
}
return 0;
}
int BinarySearch(const long A[], long key, int N)
{
int Low, Mid, High;
Low = 0;
High = N - 1;
while(Low <= High)
{
Mid = (Low + High) / 2;
if(A[Mid] < key)
Low = Mid + 1;
else if(A[Mid] > key)
High = Mid - 1;
else
return Mid;
}
return -1;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator