1
#include <stdio.h>
2
#include <stdlib.h>
3
#define MAX 1001
4
#define OK 1
5
6
int tag[MAX]; //將出現(xiàn)了等號的(即真幣)排除 標(biāo)記為1 遍歷時跳過
7
int num[MAX]; //記錄下標(biāo)為i的硬幣在不等式的兩邊出現(xiàn)的次數(shù)
8
9
int main ()
10

{
11
12
int coin[MAX]; //訪問時下標(biāo)的中介
13
int N, k, pi, count ;
14
char c;
15
16
while ( scanf ("%d%d", &N, &k) != EOF )
17
{
18
count = 0; //記錄接下來的 k 次稱量中有多少次出現(xiàn)了不等號
19
20
for ( int i = 0; i < k; i ++) // k 次的稱量記錄
21
{
22
scanf ("%d", &pi);
23
for (int j = 0; j < 2 * pi; j ++)
24
{
25
scanf ("%d", &coin[j]);
26
}
27
28
getchar ();
29
30
c = getchar ();
31
32
for (int i = 0; i < 2 * pi; i ++)
33
{
34
if (c == '=')
35
tag[coin[i]] = 1;
36
37
else if (c == '<')
38
{
39
count ++;
40
for (int j = 0; j < pi; j ++)
41
{
42
num[coin[j]]--;
43
}
44
for (int j = pi; j < 2 * pi; j++)
45
{
46
num[coin[j]]++;
47
}
48
}
49
50
else
51
{
52
count ++;
53
for (int j = 0; j < pi; j ++)
54
{
55
num[coin[j]]++;
56
}
57
for (int j = pi; j < 2 * pi; j++)
58
{
59
num[coin[j]]--;
60
}
61
}
62
}
63
64
}
65
66
int mark = 0;
67
int temp ;
68
for (int i = 1; i <= N; i ++)
69
{
70
if (tag[i] == 1) //表示為真幣,不可能
71
continue;
72
73
if (num[i] == count || num[i] == -count) //如果硬幣在不等式的兩邊出現(xiàn)的次數(shù)等于不等號數(shù)為假幣
74
{
75
mark ++;
76
temp = i;
77
}
78
}
79
80
if (mark == 1) // 假幣只有一個
81
{
82
printf ("%d\n", temp);
83
}
84
85
else
86
printf ("%d\n",0);
87
88
}
89
90
return 0;
91
}
92
#include <stdio.h>2
#include <stdlib.h>3
#define MAX 10014
#define OK 15

6
int tag[MAX]; //將出現(xiàn)了等號的(即真幣)排除 標(biāo)記為1 遍歷時跳過 7
int num[MAX]; //記錄下標(biāo)為i的硬幣在不等式的兩邊出現(xiàn)的次數(shù) 8

9
int main ()10


{11
12
int coin[MAX]; //訪問時下標(biāo)的中介 13
int N, k, pi, count ;14
char c;15
16
while ( scanf ("%d%d", &N, &k) != EOF )17

{18
count = 0; //記錄接下來的 k 次稱量中有多少次出現(xiàn)了不等號 19
20
for ( int i = 0; i < k; i ++) // k 次的稱量記錄 21

{22
scanf ("%d", &pi);23
for (int j = 0; j < 2 * pi; j ++)24

{25
scanf ("%d", &coin[j]);26
}27
28
getchar ();29
30
c = getchar ();31
32
for (int i = 0; i < 2 * pi; i ++)33

{34
if (c == '=')35
tag[coin[i]] = 1;36
37
else if (c == '<')38

{39
count ++;40
for (int j = 0; j < pi; j ++)41

{ 42
num[coin[j]]--;43
}44
for (int j = pi; j < 2 * pi; j++)45

{46
num[coin[j]]++;47
}48
}49
50
else51

{52
count ++;53
for (int j = 0; j < pi; j ++)54

{55
num[coin[j]]++;56
}57
for (int j = pi; j < 2 * pi; j++)58

{59
num[coin[j]]--;60
}61
}62
}63
64
}65
66
int mark = 0;67
int temp ;68
for (int i = 1; i <= N; i ++)69

{70
if (tag[i] == 1) //表示為真幣,不可能 71
continue;72
73
if (num[i] == count || num[i] == -count) //如果硬幣在不等式的兩邊出現(xiàn)的次數(shù)等于不等號數(shù)為假幣 74

{75
mark ++;76
temp = i;77
}78
}79
80
if (mark == 1) // 假幣只有一個 81

{82
printf ("%d\n", temp);83
}84
85
else 86
printf ("%d\n",0);87
88
}89
90
return 0;91
}92



