Advertisement
a53

bile4

a53
Jun 5th, 2021
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.72 KB | None | 0 0
  1. #include <fstream>
  2.  
  3. using namespace std;
  4.  
  5. ifstream fin("bile4.in");
  6. ofstream fout("bile4.out");
  7.  
  8.  
  9. const int NMAX = 100000;
  10. const int KMAX = NMAX / 2;
  11.  
  12. int C, N, K;
  13. int s[KMAX];
  14.  
  15.  
  16. void scrie() {
  17. for (int i = 0; i < K; i++)
  18. fout << s[i] << ' ';
  19. fout << '\n';
  20. }
  21.  
  22.  
  23. // numărul X al bilei speciale din cutia A
  24. void c1() {
  25. if (N % 2 == 1) fout << (N - 1) / 2 << '\n';
  26. else fout << -1 << '\n';
  27. }
  28.  
  29. // cel mai mic șir lexicografic
  30. void c2() {
  31. long long K_patrat = (long long)K * (long long)K;
  32. long long S = 0;
  33.  
  34. for (int i = 0; i < K - 1; i++) {
  35. s[i] = i;
  36. S += s[i];
  37. }
  38.  
  39. if (K_patrat - S <= N - 1) {
  40. s[K - 1] = K_patrat - S;
  41. scrie();
  42. return;
  43. }
  44.  
  45. s[K - 1] = K - 1;
  46. S += s[K - 1];
  47.  
  48. int dif = K_patrat - S;
  49. int g = dif / (N - K);
  50. int rest = dif % (N - K);
  51.  
  52. for (int i = 1; i <= g; i++)
  53. s[K - i] += (N - K);
  54.  
  55. if (s[K - (g + 1)] + rest != K)
  56. s[K - (g + 1)] += rest;
  57. else {
  58. s[K - (g + 1)] += (rest + 1);
  59. s[K - g] -= 1;
  60. }
  61.  
  62. scrie();
  63. }
  64.  
  65. void c3() {
  66. if (K % 2 == 0) {
  67. // K par
  68. int m = K / 2;
  69. for (int i = 0; i < K; ++i) {
  70. s[i] = m;
  71. ++m;
  72. if (m == K) ++m;
  73. }
  74. scrie();
  75. return;
  76. }
  77.  
  78. // K impar
  79. int M = K / 2;
  80. s[0] = M;
  81. s[K - 1] = 2 * K + 1 - s[0];
  82. s[M] = K - 1;
  83.  
  84. for (int i = 1, j = K - 2; i < M; ++i, --j) {
  85. s[i] = M + i;
  86. s[j] = 2 * K - s[i];
  87. }
  88.  
  89. scrie();
  90. }
  91.  
  92.  
  93. int main() {
  94. fin >> C >> N >> K;
  95.  
  96. if (C == 1) c1();
  97. else if (C == 2) c2();
  98. else if (C == 3) c3();
  99.  
  100. return 0;
  101.  
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement