Advertisement
finalshare

Substraightstring2.pas

Jul 26th, 2015
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.21 KB | None | 0 0
  1. //Do phuc tap O(n)
  2. var
  3.     fi,fo:text;
  4.     k,i,j,n,dem,max:longint;
  5.     a: array [1..1000000] of longint;
  6.     mark: array [1..500000] of longint;//Truong hop xau nhat max = 2
  7. begin
  8.     assign(fi,'INPUT.INP');
  9.     assign(fo,'OUTPUT.OUT');
  10.     reset(fi);
  11.     rewrite(fo);
  12.     readln(fi,n);
  13.     for i:=1 to n do
  14.     read(fi,a[i]);
  15.     i:=0;
  16.     max:=0;
  17.         while i<=(n-2) do
  18.         begin
  19.             inc(i);
  20.             dem:=1;
  21.             if (a[i] = a[i+1]) and (i < n) then //Tim truong hop thoa man
  22.                 while ( a[i] = a[i+1] ) and ( i<n ) do
  23.                     begin
  24.                         inc(i);
  25.                         dem:=dem+1;
  26.                     end;
  27.             if dem>max then max:= dem;
  28.         end;
  29.     if max < 2 then //Max = 1 , Max=0 thi STOP
  30.         begin
  31.             write(fo,'KHONG TON TAI');
  32.             close(fo);
  33.             close(fi);
  34.             exit;
  35.         end;
  36.     write(fo,Max);
  37.     i:=0;
  38.     j:=0;
  39.     while i<=n-2 do
  40.         begin
  41.             inc(i);
  42.             dem:=1;
  43.             if (a[i] = a[i+1]) and (i < n) then
  44.                 while ( a[i] = a[i+1] ) and ( i<n ) do
  45.                     begin
  46.                         inc(i);
  47.                         dem:=dem+1;
  48.                     end;
  49.             if dem=max then //Danh dau vi tri truong hop da thoa man
  50.                 begin
  51.                 inc(j);
  52.                 mark[j]:=i-max+1;
  53.                 end;
  54.         end;
  55.     writeln(fo);
  56.     for k:=1 to j do
  57.         begin
  58.             for i:=mark[k] to mark[k]+max-1 do 
  59.                 write(fo,a[i],' ');
  60.             writeln(fo);
  61.         end;
  62.     close(fi);
  63.     close(fo);
  64. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement