foj 1350 Very Simple Problem

来源:互联网 发布:win7下的c语言编译器 编辑:程序博客网 时间:2024/06/05 17:36

题目描述:
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;}
1 0
原创粉丝点击