题目
源地址:
http://poj.org/problem?id=2535
理解
N个评委,P道题目,每个评委对每道题进行评分。对于单个评委来说,如果他评分中的最高分的题目被视为该评委认定的“最困难的题目”,他评分中的最低分的题目被视为该评委认定的“最简单的题目”。对于每一道题,如果没有评委评定为“最困难的题目”,且有超过半数(不等于)的评委评定为“最简单的题目”,则这就可以被认为是“非常简单的题目”。
代码
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <deque>
#include <list>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <numeric>
#include <iomanip>
#include <bitset>
#include <sstream>
#include <fstream>
#define debug puts("-----")
#define pi (acos(-1.0))
#define eps (1e-8)
#define inf (1<<28)
using namespace std;
int N, P;
int arr[110];
int easy[110];
int hard[110];
int main(int argc, char const *argv[])
{
int i, j;
int tmp, flag;
int min, max;
while (scanf("%d%d", &N, &P) != EOF)
{
memset(easy, 0, sizeof(easy));
memset(hard, 0, sizeof(hard));
for (i = 0; i < N; i++)
{
min = 10000;
max = -1;
for (j = 0; j < P; j++)
{
scanf("%d", &arr[j]);
if (min > arr[j])
{
min = arr[j];
}
if (max < arr[j])
{
max = arr[j];
}
}
for (j = 0; j < P; j++)
{
if (arr[j] == min)
{
easy[j]++;
}
if (arr[j] == max && !hard[j])
{
hard[j] = 1;
}
}
}
flag = 0;
for (i = 0; i < P; i++)
{
if (easy[i] > N / 2 && hard[i] == 0)
{
if (flag)
{
printf(" ");
}
printf("%d", i + 1);
flag = 1;
}
}
if (flag == 0)
{
printf("0\n");
}
else
{
printf("\n");
}
}
return 0;
}
更新日志
- 2014年08月22日 已AC。