Pagini recente » Cod sursa (job #686975) | Cod sursa (job #253421) | Cod sursa (job #1546208) | Cod sursa (job #1521186) | Cod sursa (job #10291)
Cod sursa(job #10291)
{q-,r-,s-,d-,i-}
const maxn=1 shl 20;zero=ord('0');prim=104729;
var t:Text;
V,A,Hash:array[0..maxn]of longword;s:string;
Count,From:Array[0..prim]of longint;
unde,n,la,lb,i,pas,lg:longint;last:longword;
gasit:boolean;
return:int64;
procedure init;
begin
assign(T,'secv5.in');reset(T);readln(t,n,la,lb);
for i:=1 to N do
begin
readln(t,S);
for pas:=1 to length(s) do V[i]:=V[i]*10+ord(S[pas])-zero;
end;close(t);
end;
{var t1:longint;t2:longint absolute $0:$046c;}
begin
writeln((sizeof(v)*3+sizeof(count)*2)div 1024);
{ t1:=t2;}
init;
{ writeln((t2-t1)/18.2:0:6);}
for i:=1 to N do inc(From[V[i]-(V[i]div prim)*prim]);Count[0]:=From[0];
for i:=1 to prim do begin inc(from[i],from[i-1]);count[i]:=From[i];end;
for pas:=1 to N do
begin
unde:=V[pas]-(V[pas]div prim)*prim;gasit:=false;
for i:=From[unde]+1 to Count[unde]do if V[Hash[i]]=V[pas] then
begin A[pas]:=A[Hash[i]];gasit:=true;break;end;
if not gasit then
begin inc(lg);A[pas]:=lg;Hash[From[unde]]:=pas;dec(From[unde]);end;
end;
{ for i:=1 to N do write(V[i],' ');writeln;
for i:=1 to N do write(A[i],' ');writeln;}
{ writeln((t2-t1)/18.2:0:6); }
end.