题目描述:
http://acm.fzu.edu.cn/problem.php?pid=1350
题意:每个评委对一组题目打下难易系数,用0-1000整数表示,找出被定义为最简单的题目。
最简单题目定义: if it was called as “simplest” by more than a half of the jury, and was called as “hardest” by nobody.
超过半数的评委认为其是最简单的,而且没有评委认为其是最难的。
解题思路:首先找每个评委认为最难的,在pro数组中赋值为-1,以后不再访问。然后找每个评委认为最简单的,pro对应的增加个数。最后以pro[i]!=-1&&pro[i]>n/2确定其是否为最简单的题目。
代码:
#include<stdio.h>
#include<string.h>
int main()
{
int n,p,i,j;
int a[105],pro[105],max,min;
while(scanf("%d%d",&n,&p)!=EOF)
{memset(pro,0,sizeof(pro));//初始化pro数组
for(i=1;i<=n;i++)
{max=0;
min=1000;
//分别找数组中的最难和最易题
for(j=1;j<=p;j++)
{
scanf("%d",&a[j]);
if(a[j]>=max)max=a[j];
if(a[j]<=min)min=a[j];
}
//找到最难题赋值为-1
for(j=1;j<=p;j++)
if(a[j]==max) pro[j]=-1;
//找到最简单的题pro[j]对应增加
for(j=1;j<=p;j++)
if(a[j]==min&&pro[j]!=-1) pro[j]++;
}
int k=0;
for(i=1;i<=p;i++)
if(pro[i]!=-1&&pro[i]>n/2)//最简单题目的判断
{
if(k!=0) printf(" ");
printf("%d",i);
k=1;
}
if(k==0)//没有最简单的题目输出0
printf("0");
printf("\n");
}
return 0;
}