
code
6

#include <iostream>
7

#include <string.h>
8

using namespace std;
9

/**//*緇撴瀯浣撴潙姣忎釜鐐圭殑鏁版嵁
10

鍏朵腑data琛ㄧず杈撳叆鐨勬暟鎹?br>11

left鍜宺ight琛ㄧず浠栫殑宸﹀彸杈?br>12

鏈夋病鏈夎繛浜嗗叾浠栫殑鏈ㄦ澘
13

*/
14

typedef struct
15

{
16

int data;
17

int left,right;
18

}Node;
19

Node node[202];
20

bool b_barn[202];//b_barn[i]琛ㄧず絎琲鍙風(fēng)墰媯氭湁娌℃湁琚湪鏉胯鐩?nbsp;
21

int m,s,c;//鍜岄鐩腑鐨勪竴鏍?nbsp;
22

void work()
23

{
24

int f_start,f_end,dis;//dis琛ㄧず鏈灝忚窛紱?br>25

//f_start琛ㄧず鏈灝忚窛紱繪椂鐨勫乏杈圭殑涓嬫爣
26

//f_end 琛ㄧず鏈灝忚窛紱繪椂鐨勫彸杈圭殑涓嬫爣
27

int count = 0;//鐢ㄦ潵瀛樻渶鍚庣殑緇撴灉
28

int t = c;//琛ㄧず涓寮濮嬬敤c鍧楁湪鏉匡紝涔熷氨鏄竴涓墰媯氫竴鍧?nbsp;
29

dis = 202;//鏈澶ц窛紱伙紝琛ㄧず鏃犵┓
30

while(t > m)
31

{
32

dis = 202;
33

for(int i = 1;i < c;i++)//寰幆鏁扮粍錛屾壘鐩擱殧鏈灝忕殑錛岀劧鍚庤繛涓?nbsp;
34

{//鍥犱負(fù)榪欐牱“嫻垂”鐨勬湪鏉挎渶灝戯紝涔熷氨鏄兘杈懼埌鏈浼樿В
35

if(((node[i].data - node[i-1].data) < dis)&&(0 == node[i].left||0 == node[i-1].right))
36

{//絎竴涓垽鏂潯浠跺緢濂界悊瑙o紝絎簩涓槸琛ㄧず浠栦滑浠ュ墠娌¤繛榪囷紝涓嶇劧鐨勮瘽錛?br>37

//浼?xì)涓鐩存壘鍒扮涓涓渶灝忕殑 ,鑰屽拷鐣ヤ簡鍚庨潰鐨?nbsp;
38

dis = node[i].data - node[i-1].data;
39

f_start = i-1;
40

f_end = i;
41

}
42

}
43

for(int i = node[f_start].data+1;i < node[f_end].data;i++)
44

{//灝嗚繛璧鋒潵鐨勪袱鍧楁湪鏉夸腑闂寸殑閮界疆涓鴻瑕嗙洊
45

b_barn[i] = true;
46

}
47

node[f_start].right = 1;//鏍囪錛屼篃灝辨槸榪欎釜鐐圭殑鍙寵竟榪炰簡鍏朵粬鏈ㄦ澘
48

node[f_end].left = 1;//鏍囪錛屼篃灝辨槸榪欎釜鐐圭殑宸﹁竟榪炰簡鍏朵粬鏈ㄦ澘
49

t--;//琛ㄧず鏈ㄦ澘鏁板噺灝?
50

}
51

for(int i = node[0].data;i < node[c-1].data+1;i++)
52

{
53

if(b_barn[i])//閫氳繃琚爣璁扮殑鏁扮粍鏉ョ畻鏈鍚庣殑緇撴灉
54

count++;
55

}
56

printf("%d\n",count);
57

}
58

int cmp(const void *a,const void *b)
59

{
60

Node * c = (Node *)a;
61

Node * d = (Node *)b;
62

return c->data - d->data;
63

}
64

int main(void)
65

{
66

freopen("barn1.in","r",stdin);
67

freopen("barn1.out","w",stdout);
68

scanf("%d %d %d",&m,&s,&c);
69

memset(b_barn,false,sizeof(b_barn));//鍒濆鍖栨暟緇?nbsp;
70

for(int i = 0;i < c;i++)
71

{
72

scanf("%d",&node[i].data);
73

node[i].left = node[i].right = 0;//鍒濆鍖栨墍鏈夌殑閮芥病鏈夎繛榪?nbsp;
74

b_barn[node[i].data] = true;
75
76

}
77

qsort(node,c,sizeof(node[0]),cmp);//鍏堟帓搴忥紝浣挎湪鏉挎湁搴?nbsp;
78

work();
79

return 0;
80

}
81
