ce e gresit?
#include <cstdio>
#include <algorithm>
using namespace std;
int v[1000005],v2[1000005],n,m,i,a,b,c,d,e,k1,k2,k3,st,dr,pos,mij;
long long sol;
int main()
{
freopen("eqs.in","r",stdin);
freopen("eqs.out","w",stdout);
scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
for(k1=-50;k1<=50;k1++)
for(k2=-50;k2<=50;k2++)
for(k3=-50;k3<=50;k3++)
v[++m]=a*k1*k1*k1+b*k2*k2*k2+c*k3*k3*k3;
for(k1=-50;k1<=50;k1++)
for(k2=-50;k2<=50;k2++)
v2[++n]=d*k1*k1*k1+e*k2*k2*k2;
sort(v2+1,v2+n+1);
for(i=1;i<=m;i++)
{
st=1;
dr=n;
pos=0;
while(st<=dr)
{
mij=(st+dr)/2;
if(v2[mij]<=-v)
{
pos=mij;
st=mij+1;
}
else
dr=mij-1;
}
while(v2[pos]==-v&&pos>0)
{
sol++;
pos--;
}
}
printf("%lld",sol);
return 0;
}
Vezi ca solutiile trebuie sa fie nenule.Solutia te merge(cel putin pe exemplu,pe care am verificat-o) daca pui conditia k1!=0&&k2!=0&&k3!=0 peste tot unde apar variabilele.