浙大OJLunch Time 出现Segmentation Fault求大神解
#include<stdio.h>#include<string.h>
#include<stdlib.h>
int cmp(const void *x,const void *y)
{
return *(int *)y-*(int *)x;
}
int main()
{
int t,s,m,n,d,i,j,k,l,sum,max,q;
char str[110][110];
char str1[110][110];
char str2[110][110];
int a[110];
int b[110];
int c[110];
int h[110];
int e[110];
int f[110];
int g[110];
scanf("%d",&t);
while(t--)
{
sum=0;
max=-1;
scanf("%d%d%d",&s,&n,&d);
for(i=0;i<s;i++)
scanf("%s %d",str[i],&a[i]);
for(i=0;i<n;i++)
scanf("%s %d",str1[i],&b[i]);
for(i=0;i<d;i++)
scanf("%s %d",str2[i],&c[i]);
for(i=0;i<s;i++)
e[i]=a[i];
for(i=0;i<n;i++)
f[i]=b[i];
for(i=0;i<d;i++)
g[i]=c[i];
if(s%2==0)
{
for(i=0;i<s;i++)
{
if(a[i]>max)
{
max=a[i];
l=i;
}
}
h[0]=l;
}
if(s%2==1)
{
qsort(e,s,sizeof(e[0]),cmp);
q=e[1];
for(i=0;i<s;i++)
{
if(a[i]==q)
{
l=i;
break;
}
}
h[0]=l;
}
max=-1;
if(n%2==0)
{
for(i=0;i<n;i++)
{
if(b[i]>max)
{
max=b[i];
l=i;
}
}
h[1]=l;
}
if(n%2==1)
{
qsort(f,n,sizeof(f[0]),cmp);
q=f[1];
for(i=0;i<n;i++)
{
if(b[i]==q)
{
l=i;
break;
}
}
h[1]=l;
}
max=-1;
if(d%2==0)
{
for(i=0;i<d;i++)
{
if(c[i]>max)
{
max=c[i];
l=i;
}
}
h[2]=l;
}
if(d%2==1)
{
qsort(g,d,sizeof(g[0]),cmp);
q=g[1];
for(i=0;i<d;i++)
{
if(c[i]==q)
{
l=i;
break;
}
}
h[2]=l;
}
printf("%d %s %s %s\n",a[h[0]]+b[h[1]]+c[h[2]],str[h[0]],str1[h[1]],str2[h[2]]);
}
return 0;
}
虽然有点啰嗦 但是感觉思路是对的 输出也没错