Advertisement
Guest User

Untitled

a guest
May 27th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. #include <iostream>
  2. #include <set>
  3. #include <map>
  4. #include <vector>
  5. #include <iomanip>
  6. #include <stack>
  7. #include <deque>
  8. #include <queue>
  9. #include <string>
  10. #include <string.h>
  11. #include <cstdio>
  12. #include <cstring>
  13. #include <cmath>
  14. #include <math.h>
  15. #include <algorithm>
  16.  
  17. using namespace std;
  18. typedef long long ll;
  19. typedef long double ld;
  20.  
  21. const ll INF = 1e9;
  22. const ll MAXN = 1e3;
  23. const ld eps = 1e-7;
  24. const ll FH = 400;
  25.  
  26. #define fn(i, q, n) for (ll i = q; i < n; i++)
  27. #define fnn(i, q, n) for (ll i = q; i <= n; i++)
  28. #define pb push_back
  29. #define pf push_front
  30. #define ppb pop_back
  31. #define ppf pop_front
  32. #define mp make_pair
  33.  
  34. ll n, d;
  35. ll a[MAXN][MAXN], ans[MAXN][MAXN];
  36.  
  37. void read_data();
  38. void solve();
  39. ll create_ans();
  40.  
  41. int main()
  42. {
  43. read_data();
  44. solve();
  45. return 0;
  46. }
  47.  
  48. void read_data()
  49. {
  50. cin >> n >> d;
  51. d--;
  52. }
  53.  
  54. ll create_ans()
  55. {
  56. ll x = 0;
  57. fn(i, 0, n)
  58. if (ans[i][0] + ans[i][1] - ans[0][0] - ans[0][1] > 0)
  59. x++;
  60. return x;
  61. }
  62.  
  63. void solve()
  64. {
  65. fn(i, 0, 2)
  66. {
  67. fn(j, 0, n)
  68. {
  69. cin >> a[j][i];
  70. a[j][i]--;
  71. }
  72. }
  73.  
  74. fnn(i, 0, n)
  75. {
  76. ll cnt = FH;
  77. fn(j, 0, i)
  78. {
  79. ans[a[j][0]][0] = cnt;
  80. cnt--;
  81. }
  82.  
  83. cnt = n - i;
  84.  
  85. fn(j, i, n)
  86. {
  87. ans[a[j][0]][0] = cnt;
  88. cnt--;
  89. }
  90.  
  91. fnn(j, 0, n)
  92. {
  93. cnt = FH;
  94. fn(q, 0, j)
  95. {
  96. ans[a[q][1]][1] = cnt;
  97. cnt--;
  98. }
  99.  
  100. cnt = n - j;
  101.  
  102. fn(q, j, n)
  103. {
  104. ans[a[q][1]][1] = cnt;
  105. cnt--;
  106. }
  107.  
  108. if (create_ans() == d)
  109. {
  110. cout << "Possible\n";
  111. fn(q, 0, 2)
  112. {
  113. fn(z, 0, n)
  114. cout << ans[a[z][q]][q] << ' ';
  115. cout << endl;
  116. }
  117. return;
  118. }
  119. }
  120. }
  121.  
  122. cout << "Impossible" << endl;
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement