| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
求助:为何一直Wavar i,j,k,n:longint;
flag:boolean;
hash:array[0..1000000] of longint;
l:array[0..1000001] of longint;
a:array[0..1000001,0..7] of longint;
procedure sort(l,r,t:longint);
var
i,j,x,y:longint;
begin
i:=l;
j:=r;
x:=a[t,(l+r) div 2];
repeat
while a[t,i]<x do
inc(i);
while x<a[t,j] do
dec(j);
if not(i>j) then
begin
y:=a[t,i];
a[t,i]:=a[t,j];
a[t,j]:=y;
inc(i);
j:=j-1;
end;
until i>j;
if l<j then
sort(l,j,t);
if i<r then
sort(i,r,t);
end;
function pd:boolean;
var ii,x:longint;
f:boolean;
begin
ii:=hash[k];
while ii<>0 do
begin
sort(1,6,i);
sort(1,6,ii);
f:=true;
for x:=1 to 6 do
if a[i,x]<>a[ii,x] then
begin
f:=false;
break;
end;
if f then
exit(true);
ii:=l[ii];
end;
pd:=false;
end;
begin
while not eof do
begin
readln(n);
flag:=false;
fillchar(hash,sizeof(hash),0);
for i:=1 to n do
begin
k:=0;
for j:=1 to 6 do
begin
read(a[i,j]);
k:=(k+a[i,j]) mod 999983;
end;
k:=k mod 999983;
if hash[k]=0
then hash[k]:=i
else begin
if pd
then begin
writeln('Twin snowflakes found.');
for j:=i to n do
readln;
flag:=true;
break;
end
else begin
l[i]:=hash[k];
hash[k]:=i;
end;
end;
end;
if flag=false then
writeln('No two snowflakes are alike.');
end;
end.
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator