Cod sursa(job #124982)

Utilizator marius21Petcu Marius marius21 Data 20 ianuarie 2008 10:44:29
Problema Restante Scor 100
Compilator fpc Status done
Runda preONI 2008, Runda 3, Clasele 5-8 Marime 1.73 kb
var a:array[1..36001] of string[16];
nr,i,st,n:longint;
f,g:text;

procedure retrievemstr(var s:string; st,en:longint; var m:longint);
var i,j,di,dj,aux:longint;
auxc:char;
begin
i:=st;
j:=en;
di:=1;
dj:=0;
while i<>j do begin
        if s[i]>s[j] then begin
                auxc:=s[i];
                s[i]:=s[j];
                s[j]:=auxc;
                aux:=-di;
                di:=-dj;
                dj:=aux;
                end;
        inc(i,di);
        inc(j,dj);
        end;
m:=i;
end;

procedure quickstr(var s:string; i,j:longint);
var m:longint;
begin
if (i<=j) then begin
        retrievemstr(s,i,j,m);
        quickstr(s,i,m-1);
        quickstr(s,m+1,j);
        end
end;

procedure retrievem(st,en:longint; var m:longint);
var i,j,di,dj,aux:longint;
auxc:string[16];
begin
i:=st;
j:=en;
di:=1;
dj:=0;
while i<>j do begin
        if a[i]>a[j] then begin
                auxc:=a[i];
                a[i]:=a[j];
                a[j]:=auxc;
                aux:=-di;
                di:=-dj;
                dj:=aux;
                end;
        inc(i,di);
        inc(j,dj);
        end;
m:=i;
end;

procedure quick(i,j:longint);
var m:longint;
begin
if (i<=j) then begin
        retrievem(i,j,m);
        quick(i,m-1);
        quick(m+1,j);
        end
end;

begin
assign(f,'restante.in');
assign(g,'restante.out');
reset(f);
rewrite(g);
readln(f,n);
for i:=1 to n do begin
        readln(f,a[i]);
        quickstr(a[i],1,length(a[i]));
        end;
quick(1,n);
i:=1;
st:=1;
while i<=n do begin
    inc(i);
    while (i<=n) and (a[i]=a[st]) do
        inc(i);
    if i-st=1 then
        inc(nr);
    st:=i;
    end;
writeln(g,nr);
close(f);
close(g);
end.