Poj 1011 TLE...求大神指教0.0

enter code here

#include
#include
using namespace std;
const int maxn = 65;
int A[maxn];
bool used[maxn];
int n;
bool cmp(int a,int b)
{
return a > b;
}
bool ok(int re,int len,int length)
{
if(re == 0 && len == length) return true;
if(len == length) len = 0;
for(int i = 0; i < n; i++)
{
if(used[i]) continue;
if(A[i] > length - len) continue;
used[i] = true;
if(ok(re-1,len+A[i],length)) return true;
used[i] = false;
if(A[i] == len || len == length) break;
}
return false;
}
int main()
{
while(cin>>n)
{
if(n == 0) break;
int tot = 0;
for(int i = 0; i < n; i++)
{
used[i] = false;
cin>>A[i];
tot += A[i];
}
sort(A,A+n,cmp);
for(int i = A[0]; i <= tot/2; i++)
{
if(tot%i == 0)
{
if(ok(n,0,i))
{
cout<<i<<endl;
break;
}
}
}
}
return 0;
}
求大神指出哪里TLE了0.0

怎么不把你测试输入条件贴出来呢?