can anyone find me a critical input or tell me what is wrong with it?
Code: Select all
#include<stdio.h>
int swap(int *s,int start,int end,int start1)
{
int sp,i,j;
for(i=start,j=start1;i<=start+end;i++,j++)
{
sp=s[i];
s[i]=s[j];
s[j]=sp;
}
}
int tugofwar(int *s,int l)
{
int e,i,j,k;
int s1,s2,s4,s3,d,d1,d2,m,ms1,ms2;
m=451;
for(e=0;e<l/2;e++)
{
for(i=0;i<l;i++)
{
for(j=i+e+1;j+e<l;j++)
{
if(l%2==1)
{
s1=0;
s2=0;
s3=0;
s4=0;
swap(s,i,e,j);
for(k=0;k<=l/2;k++)
s1=s1+s[k];
for(k=l/2+1;k<l;k++)
s2=s2+s[k];
for(k=0;k<l/2;k++)
s3=s3+s[k];
for(k=l/2;k<l;k++)
s4=s4+s[k];
if(s1>s2)
d1=s1-s2;
else
d1=s2-s1;
if(s3>s4)
d2=s3-s4;
else
d2=s4-s3;
if(d1<d2)
d=d1;
else
{
d=d2;
s1=s3;
s2=s4;
}
if(d<m)
{
m=d;
if(s1<s2)
{
ms1=s1;
ms2=s2;
}
else
{
ms2=s1;
ms1=s2;
}
}
}
else
{
s1=0;
s2=0;
swap(s,i,e,j);
for(k=0;k<(l/2);k++)
s1=s1+s[k];
for(k=(l/2);k<l;k++)
s2=s2+s[k];
if(s1>s2)
d=s1-s2;
else
d=s2-s1;
if(d<m)
{
m=d;
if(s1<s2)
{
ms1=s1;
ms2=s2;
}
else
{
ms2=s1;
ms1=s2;
}
}
}
swap(s,i,e,j);
if(l%2==1)
{
s1=0;
s2=0;
s3=0;
s4=0;
swap(s,i,e,j);
for(k=0;k<=l/2;k++)
s1=s1+s[k];
for(k=l/2+1;k<l;k++)
s2=s2+s[k];
for(k=0;k<l/2;k++)
s3=s3+s[k];
for(k=l/2;k<l;k++)
s4=s4+s[k];
if(s1>s2)
d1=s1-s2;
else
d1=s2-s1;
if(s3>s4)
d2=s3-s4;
else
d2=s4-s3;
if(d1<d2)
d=d1;
else
{
d=d2;
s1=s3;
s2=s4;
}
if(d<m)
{
m=d;
if(s1<s2)
{
ms1=s1;
ms2=s2;
}
else
{
ms2=s1;
ms1=s2;
}
}
}
else
{
s1=0;
s2=0;
swap(s,i,e,j);
for(k=0;k<(l/2);k++)
s1=s1+s[k];
for(k=(l/2);k<l;k++)
s2=s2+s[k];
if(s1>s2)
d=s1-s2;
else
d=s2-s1;
if(d<m)
{
m=d;
if(s1<s2)
{
ms1=s1;
ms2=s2;
}
else
{
ms2=s1;
ms1=s2;
}
}
}
/*for(k=0;k<l;k++)
printf("%d ",s[k]);
printf("\n");*/
swap(s,i,e,j);
}
}
}
for(e=0;e<l/2;e++)
{
for(i=0;i<l;i++)
{
for(j=i+e+1;j+e<l;j++)
{
if(l%2==1)
{
s1=0;
s2=0;
s3=0;
s4=0;
swap(s,i,e,j);
for(k=0;k<=l/2;k++)
s1=s1+s[k];
for(k=l/2+1;k<l;k++)
s2=s2+s[k];
for(k=0;k<l/2;k++)
s3=s3+s[k];
for(k=l/2;k<l;k++)
s4=s4+s[k];
if(s1>s2)
d1=s1-s2;
else
d1=s2-s1;
if(s3>s4)
d2=s3-s4;
else
d2=s4-s3;
if(d1<d2)
d=d1;
else
{
d=d2;
s1=s3;
s2=s4;
}
if(d<m)
{
m=d;
if(s1<s2)
{
ms1=s1;
ms2=s2;
}
else
{
ms2=s1;
ms1=s2;
}
}
}
else
{
s1=0;
s2=0;
swap(s,i,e,j);
for(k=0;k<(l/2);k++)
s1=s1+s[k];
for(k=(l/2);k<l;k++)
s2=s2+s[k];
if(s1>s2)
d=s1-s2;
else
d=s2-s1;
if(d<m)
{
m=d;
if(s1<s2)
{
ms1=s1;
ms2=s2;
}
else
{
ms2=s1;
ms1=s2;
}
}
}
swap(s,i,e,j);
if(l%2==1)
{
s1=0;
s2=0;
s3=0;
s4=0;
swap(s,i,e,j);
for(k=0;k<=l/2;k++)
s1=s1+s[k];
for(k=l/2+1;k<l;k++)
s2=s2+s[k];
for(k=0;k<l/2;k++)
s3=s3+s[k];
for(k=l/2;k<l;k++)
s4=s4+s[k];
if(s1>s2)
d1=s1-s2;
else
d1=s2-s1;
if(s3>s4)
d2=s3-s4;
else
d2=s4-s3;
if(d1<d2)
d=d1;
else
{
d=d2;
s1=s3;
s2=s4;
}
if(d<m)
{
m=d;
if(s1<s2)
{
ms1=s1;
ms2=s2;
}
else
{
ms2=s1;
ms1=s2;
}
}
}
else
{
s1=0;
s2=0;
swap(s,i,e,j);
for(k=0;k<(l/2);k++)
s1=s1+s[k];
for(k=(l/2);k<l;k++)
s2=s2+s[k];
if(s1>s2)
d=s1-s2;
else
d=s2-s1;
if(d<m)
{
m=d;
if(s1<s2)
{
ms1=s1;
ms2=s2;
}
else
{
ms2=s1;
ms1=s2;
}
}
}
/*for(k=0;k<l;k++)
printf("%d ",s[k]);
printf("\n");*/
}
}
}
for(e=0;e<l/2;e++)
{
for(i=0;i<l;i++)
{
for(j=i+e+1;j+e<l;j++)
{
if(l%2==1)
{
s1=0;
s2=0;
s3=0;
s4=0;
for(k=0;k<=l/2;k++)
s1=s1+s[k];
for(k=l/2+1;k<l;k++)
s2=s2+s[k];
for(k=0;k<l/2;k++)
s3=s3+s[k];
for(k=l/2;k<l;k++)
s4=s4+s[k];
if(s1>s2)
d1=s1-s2;
else
d1=s2-s1;
if(s3>s4)
d2=s3-s4;
else
d2=s4-s3;
if(d1<d2)
d=d1;
else
{
d=d2;
s1=s3;
s2=s4;
}
if(d<m)
{
m=d;
if(s1<s2)
{
ms1=s1;
ms2=s2;
}
else
{
ms2=s1;
ms1=s2;
}
}
}
else
{
s1=0;
s2=0;
swap(s,i,e,j);
for(k=0;k<(l/2);k++)
s1=s1+s[k];
for(k=(l/2);k<l;k++)
s2=s2+s[k];
if(s1>s2)
d=s1-s2;
else
d=s2-s1;
if(d<m)
{
m=d;
if(s1<s2)
{
ms1=s1;
ms2=s2;
}
else
{
ms2=s1;
ms1=s2;
}
}
}
swap(s,i,e,j);
if(l%2==1)
{
s1=0;
s2=0;
s3=0;
s4=0;
swap(s,i,e,j);
for(k=0;k<=l/2;k++)
s1=s1+s[k];
for(k=l/2+1;k<l;k++)
s2=s2+s[k];
for(k=0;k<l/2;k++)
s3=s3+s[k];
for(k=l/2;k<l;k++)
s4=s4+s[k];
if(s1>s2)
d1=s1-s2;
else
d1=s2-s1;
if(s3>s4)
d2=s3-s4;
else
d2=s4-s3;
if(d1<d2)
d=d1;
else
{
d=d2;
s1=s3;
s2=s4;
}
if(d<m)
{
m=d;
if(s1<s2)
{
ms1=s1;
ms2=s2;
}
else
{
ms2=s1;
ms1=s2;
}
}
}
else
{
s1=0;
s2=0;
swap(s,i,e,j);
for(k=0;k<(l/2);k++)
s1=s1+s[k];
for(k=(l/2);k<l;k++)
s2=s2+s[k];
if(s1>s2)
d=s1-s2;
else
d=s2-s1;
if(d<m)
{
m=d;
if(s1<s2)
{
ms1=s1;
ms2=s2;
}
else
{
ms2=s1;
ms1=s2;
}
}
}
/*for(k=0;k<l;k++)
printf("%d ",s[k]);
printf("\n");*/
swap(s,i,e,j);
}
}
}
printf("%d %d\n",ms1,ms2);
}
int main()
{
int s[100];
int k,l,c,i;
int a;
a=0;
scanf("%d",&c);
for(i=1;i<=c;i++)
{
scanf("%d",&l);
for(k=0;k<l;k++)
scanf("%d",&s[k]);
if(a)
printf("\n");
a=1;
if(l==1)
printf("0 %d\n",s[0]);
else
tugofwar(s,l);
}
return 0;
}