为什么同一份代码在不同的oj上有不同的测评效果
#include<bits/stdc++.h>
using namespace std;
int a[1005],cnt,n,sum=0;
bool vis[1005];
static inline int read()
{
int x=0,f=1;
char s=getchar();
while(s>='0'&&s<='9')
{
x=(x<<1)+(x<<3)+(s^48);
s=getchar();
}
return x*f;
}
static inline bool dfs(int k,int step,int rest,int len)
{
int i;
if(k==n+1&&rest==0)
{
return true;
}
else
{
if(k==n+1)
{
return false;
}
else
{
if(rest==0)
{
rest=len;
step=0;
}
}
}
for(i=step+1;i<=n;++i)
{
if(!vis[i])
{
if(rest-a[i]>=0)
{
vis[i]=true;
if(dfs(k+1,i,rest-a[i],len))
{
return true;
}
vis[i]=false;
if(a[i]==rest||len==rest)
{
break;
}
while(a[i]==a[i+1])
{
i++;
}
}
}
}
return false;
}
int main()
{
int i;
n=read();
for(i=1;i<=n;++i)
{
a[i]=read();
sum+=a[i];
}
std::sort(a+1,a+1+n,greater<int>());
for(i=a[1];i<=sum;++i)
{
if(!(sum%i))
{
if(dfs(1,0,i,i))
{
printf("%d",i);
return 0;
}
}
}
}