Barn Repair (barn1)[USACO 1.3.2]

本文介绍了一个使用Pascal编写的程序,该程序实现快速排序算法来处理数组,并完成特定的数据处理任务。文章详细展示了程序结构,包括类型定义、变量声明、初始化过程、排序算法实现及其调用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

{
ID:1011mashuo
PROG:barn1
LANG:PASCAL
}
program barn1;

type
	atp=array[1..200] of longint;

var
	n,s,c:longint;
	a,b,d,e:atp;

procedure init;
var
	i:longint;
begin
	readln(n,s,c);
	for i:=1 to c do read(a[i]);
	if c<n then
		begin
			writeln(c);
			halt;
		end;
end;

procedure qsort(l,r:longint);
var
	i,j,m,t:longint;
begin
	i:=l;
	j:=r;
	m:=a[(l+r) shr 1];
	repeat
		while a[i]<m do inc(i);
		while a[j]>m do dec(j);
		if i<=j then
			begin
				t:=a[i];
				a[i]:=a[j];
				a[j]:=t;
				inc(i);
				dec(j);
			end;
	until i>j;
	if i<r then qsort(i,r);
	if l<j then qsort(l,j);
end;

procedure qsort1(l,r:longint);
var
	i,j,m,t:longint;
begin
	i:=l;
	j:=r;
	m:=b[(l+r) shr 1];
	repeat
		while b[i]<m do inc(i);
		while b[j]>m do dec(j);
		if i<=j then
			begin
				t:=b[i];
				b[i]:=b[j];
				b[j]:=t;
				inc(i);
				dec(j);
			end;
	until i>j;
	if i<r then qsort1(i,r);
	if l<j then qsort1(l,j);
end;

procedure print;
var
	i,q,tot,j,temp,t1,t2:longint;
begin
	for i:=1 to c-1 do
		begin
			b[i]:=abs(a[i+1]-a[i]);
			d[i]:=b[i];
		end;
	qsort1(1,c-1);
	t1:=0;  
	temp:=0;
	q:=c-1;
	for i:=1 to n-1 do
		begin
			e[i]:=b[q];
			dec(q);
		end;
	if n=1 then
		begin
			writeln(a[c]-a[1]+1);
			halt;
		end
	else
		begin
			temp:=a[c]-a[1]+1;
			for i:=1 to n-1 do temp:=temp-e[i]+1;
			t1:=temp;
		end;
	writeln(t1);
end;

begin
	assign(input,'barn1.in'); reset(input);
	assign(output,'barn1.out'); rewrite(output);

	init;
	qsort(1,c);
	print;

	close(input); close(output);
end.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值