p1062
迎春舞会之交谊舞
背景 Background
HNSDFZ的同学们为了庆祝春节,准备排练一场舞会。
描述 Description
明显……交谊舞是2个人跳的,而且一男一女 -____-||||。
由于交谊舞之前的节目安排,所有的表演者都站成了一排。这一排人的顺序满足2点:
①对于一对舞伴男生站在女生的左边。
②任何一对舞伴之间,要么没有人,要么就有若干对舞伴。
排得过于整齐导致那些要表演交谊舞的人都没办法看到自己的舞伴,怎么办类…….
所幸的是,SDFZ的女生比男生聪明得多。她们知道自己左边有几个男生。
现在就请你再告诉这些女生,她们的舞伴距离她们多远(即包括那个男生,一共有多少男生夹在他们之间)。
输入格式 Input Format
第一行为一个数n,表示参与跳交谊舞的女生个数。
第二行n个数,从左到右表示这n个女生左边分别有多少个男生。
输出格式 Output Format
一排n个数,行末无空格。表示n个女生与其舞伴的距离。
样例输入 Sample Input
6
4 5 6 6 6 6
样例输出 Sample Output
1 1 1 4 5 6
背景 Background
HNSDFZ的同学们为了庆祝春节,准备排练一场舞会。
描述 Description
明显……交谊舞是2个人跳的,而且一男一女 -____-||||。
由于交谊舞之前的节目安排,所有的表演者都站成了一排。这一排人的顺序满足2点:
①对于一对舞伴男生站在女生的左边。
②任何一对舞伴之间,要么没有人,要么就有若干对舞伴。
排得过于整齐导致那些要表演交谊舞的人都没办法看到自己的舞伴,怎么办类…….
所幸的是,SDFZ的女生比男生聪明得多。她们知道自己左边有几个男生。
现在就请你再告诉这些女生,她们的舞伴距离她们多远(即包括那个男生,一共有多少男生夹在他们之间)。
输入格式 Input Format
第一行为一个数n,表示参与跳交谊舞的女生个数。
第二行n个数,从左到右表示这n个女生左边分别有多少个男生。
输出格式 Output Format
一排n个数,行末无空格。表示n个女生与其舞伴的距离。
样例输入 Sample Input
6
4 5 6 6 6 6
样例输出 Sample Output
1 1 1 4 5 6
1 var a:array[1..20000] of integer;
2 x:array[0..10000] of integer;
3
4 n,l,i,j,k:integer;
5 begin
6 assign(input,'T.txt');
7 assign(output,'A.txt');
8 reset(input);
9 rewrite(output);
10 readln(n);
11 x[0]:=0;
12 l:=1;
13 k:=0;
14 for i:=1 to n do{读入男生数,构成一个数组男生是-1,女生是1}
15 begin
16 read(x[i]);
17 for j:=x[i-1]+1 to x[i] do
18 begin
19 k:=k+1;
20 a[k]:=-1;
21 end;
22 k:=k+1;
23 a[k]:=1;
24
25 end;
26
27 i:=1;
28
29 while n<>0 do{一次检查女生和男生的匹配,如果输出了把男女生都设为0}
30 begin
31 while a[i]<>1 do i:=i+1;
32 j:=i;
33 while a[j]<>-1 do j:=j-1;
34 if n<>1 then write((i-j+1) div 2,' ') else write((i-j+1) div 2) ;
35 for l:=j to i do a[l]:=0;
36 n:=n-1
37 end;
38
39
40 close(input);
41 close(output);
42 end.
43
2 x:array[0..10000] of integer;
3
4 n,l,i,j,k:integer;
5 begin
6 assign(input,'T.txt');
7 assign(output,'A.txt');
8 reset(input);
9 rewrite(output);
10 readln(n);
11 x[0]:=0;
12 l:=1;
13 k:=0;
14 for i:=1 to n do{读入男生数,构成一个数组男生是-1,女生是1}
15 begin
16 read(x[i]);
17 for j:=x[i-1]+1 to x[i] do
18 begin
19 k:=k+1;
20 a[k]:=-1;
21 end;
22 k:=k+1;
23 a[k]:=1;
24
25 end;
26
27 i:=1;
28
29 while n<>0 do{一次检查女生和男生的匹配,如果输出了把男女生都设为0}
30 begin
31 while a[i]<>1 do i:=i+1;
32 j:=i;
33 while a[j]<>-1 do j:=j-1;
34 if n<>1 then write((i-j+1) div 2,' ') else write((i-j+1) div 2) ;
35 for l:=j to i do a[l]:=0;
36 n:=n-1
37 end;
38
39
40 close(input);
41 close(output);
42 end.
43