Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

大模拟啊……

Posted by This_poet at 2011-10-05 19:08:38 on Problem 1833
看到很多人讨论……有那么难么?纯模拟就行了啊。
我的代码:
Program POJ1833;
Const
		maxn=2000;
Var
		i,j,k,m,n,s,temp,p,res,rem				:Longint;
		a	                                                :Array[0..maxn]of Longint;
		b							:Array[0..maxn]of Longint;

Procedure Changedir;
var p,q:Longint;
begin
        for p:=m downto 1 do
                if a[p]>a[p-1] then begin
                                        rem:=p;
                                        for q:=rem to m do
                                                b[rem+m-q]:=a[q];
                                        for q:=rem to m do
                                                a[q]:=b[q];
                                        exit;
                end;
end;

Procedure Main;
begin
	readln(n);
	for i:=1 to n do
		begin
			readln(m,k);
			s:=0;
			for j:=1 to m do
				read(a[j]);
			while s<k do
				begin
					inc(s);
					for j:=m-1 downto 0 do
						if a[j]<a[j+1] then
							begin
								for p:=j+1 to m+1 do
									if a[p]<a[j]then break;
								dec(p);
								temp:=a[p];a[p]:=a[j];a[j]:=temp;
                        					if a[0]<>0 then
                                                                        begin
                                                                                for res:=m downto 1 do
						                                        a[res]:=a[res-1];
                                                                                a[0]:=0;
                                                                                changedir;
                                                                        end
								else begin
                                                                for p:=j+1 to m do
									b[m+j+1-p]:=a[p];
								for p:=j+1 to m do
									a[p]:=b[p];
                                                                end;
								break;
							end;
				end;
			for j:=1 to m-1 do
				write(a[j],' ');
			writeln(a[m]);
		end;
end;

BEGIN
	main;
END.



Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator