fork(1) download
  1. function Trova(N, K: longint; var A: array of longint): longint;
  2.  
  3. var M,i,j,c,max:longint;
  4. B:array[1..100000] of boolean;
  5.  
  6. begin
  7. if K=1 then M:=0;
  8. if K>N then M:=N
  9. else
  10. begin
  11. M:=0;
  12. for i:=0 to N - 1 do
  13. for j:=i+1 to N - 1 do
  14. if A[i]>A[j] then
  15. begin
  16. c:=A[i];
  17. A[i]:=A[j];
  18. A[j]:=c
  19. end;
  20. max:=A[N-1];
  21. writeln(max);
  22. writeln(B[A[0]]);
  23. for i:=0 to N - 1 do
  24. begin
  25. if (B[A[i]]<>false) then
  26. B[A[i]]:=true;
  27. if (B[A[i]]=true) and (k*A[i]<max+1) then
  28. B[k*A[i]]:=false;
  29. end;
  30. for i:=1 to max do
  31. if B[i]=true then
  32. begin
  33. writeln(i,' ',B[i]);
  34. M:=M+1;
  35. end;
  36. end;
  37. Trova := M;
  38. end;
  39.  
  40. const
  41. MAXN = 100000;
  42. var
  43. N, K, i: longint;
  44. A : array[0..MAXN-1] of longint;
  45.  
  46. begin
  47. readln(N, K);
  48. for i:=0 to N-1 do
  49. read(A[i]);
  50.  
  51. writeln(Trova(N, K, A));
  52. end.
Success #stdin #stdout 0s 668KB
stdin
6 2
2 3 4 5 6 12
stdout
12
FALSE
0