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. for i:=0 to N - 1 do
  23. begin
  24. if (B[A[i]]<>false) then
  25. B[A[i]]:=true;
  26. if (B[A[i]]=true) and (k*A[i]<max+1) then
  27. B[k*A[i]]:=false;
  28. end;
  29. for i:=1 to max do
  30. if B[i]=true then
  31. begin
  32. writeln(i,' ',B[i]);
  33. M:=M+1;
  34. end;
  35. end;
  36. Trova := M;
  37. end;
  38.  
  39. const
  40. MAXN = 100000;
  41. var
  42. N, K, i: longint;
  43. A : array[0..MAXN-1] of longint;
  44.  
  45. begin
  46. readln(N, K);
  47. for i:=0 to N-1 do
  48. read(A[i]);
  49.  
  50. writeln(Trova(N, K, A));
  51. end.
Success #stdin #stdout 0s 636KB
stdin
6 2
2 3 4 5 6 12
stdout
12
0