nmbsrt.pas 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. Const
  2. size = 1000;
  3. fname = 'input.txt';
  4. oname = 'output.txt';
  5. type Queue = record
  6. AR:Array [0..size] of Word;
  7. head,tail:byte;
  8. end;
  9. var
  10. Alls : array [0..10] of Queue;
  11. {----------------------}
  12. Procedure Add(var Qu:Queue;num:word);
  13. begin
  14. if (Qu.tail<=size) then begin
  15. Qu.AR[Qu.tail]:=num;
  16. inc(Qu.tail);
  17. end;
  18. end;
  19. {----------------------}
  20. Function Get(var Qu:Queue;var OUT:word):boolean;
  21. begin
  22. if (Qu.head<>Qu.tail) then begin
  23. OUT:=Qu.AR[Qu.head];
  24. Get:=true;
  25. inc(Qu.head);
  26. if (Qu.head=qu.tail) then begin
  27. qu.head:=0;
  28. qu.tail:=0;
  29. end;
  30. end else Get:=false;
  31. end;
  32. {----------------------}
  33. Function GetNum(num:word;pos:byte):byte;
  34. var i:byte;
  35. begin
  36. for i := 1 to pos do num:=num div 10;
  37. GetNum:=num mod 10;
  38. end;
  39. {----------------------}
  40. Procedure GetData;
  41. var
  42. F:text;
  43. cl:word;
  44. begin
  45. Assign(F,fname);
  46. Reset(F);
  47. while not eof(F) do
  48. begin
  49. Read(F,cl);
  50. Add(Alls[10],cl);
  51. end;
  52. Close(F);
  53. end;
  54. {----------------------}
  55. Procedure OutData;
  56. var
  57. F:text;
  58. cl:word;
  59. begin
  60. Assign(F,oname);
  61. ReWrite(F);
  62. while Get(Alls[10],cl) do WriteLn(F,cl);
  63. Close(F);
  64. end;
  65. {----------------------}
  66. var
  67. Razm : byte;
  68. i,j : word;
  69. vl : word;
  70. begin
  71. GetData;
  72. razm:=0;
  73. for i := Alls[10].head to Alls[10].tail do
  74. begin
  75. if (GetNum(Alls[10].AR[i],razm+1)<>0) then Inc(Razm);
  76. end;
  77. for i := 0 to razm do
  78. begin
  79. while Get(alls[10],vl) do Add(Alls[GetNum(vl,i)],vl);
  80. for j:=0 to 9 do
  81. begin
  82. While Get(Alls[j],vl) do Add(Alls[10],vl);
  83. end;
  84. end;
  85. OutData;
  86. end.