Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <set>
- #include <map>
- #include <vector>
- #include <iomanip>
- #include <stack>
- #include <deque>
- #include <queue>
- #include <string>
- #include <string.h>
- #include <cstdio>
- #include <cstring>
- #include <cmath>
- #include <math.h>
- #include <algorithm>
- using namespace std;
- typedef long long ll;
- typedef long double ld;
- const ll INF = 1e9;
- const ll MAXN = 1e3;
- const ld eps = 1e-7;
- const ll FH = 400;
- #define fn(i, q, n) for (ll i = q; i < n; i++)
- #define fnn(i, q, n) for (ll i = q; i <= n; i++)
- #define pb push_back
- #define pf push_front
- #define ppb pop_back
- #define ppf pop_front
- #define mp make_pair
- ll n, d;
- ll a[MAXN][MAXN], ans[MAXN][MAXN];
- void read_data();
- void solve();
- ll create_ans();
- int main()
- {
- read_data();
- solve();
- return 0;
- }
- void read_data()
- {
- cin >> n >> d;
- d--;
- }
- ll create_ans()
- {
- ll x = 0;
- fn(i, 0, n)
- if (ans[i][0] + ans[i][1] - ans[0][0] - ans[0][1] > 0)
- x++;
- return x;
- }
- void solve()
- {
- fn(i, 0, 2)
- {
- fn(j, 0, n)
- {
- cin >> a[j][i];
- a[j][i]--;
- }
- }
- fnn(i, 0, n)
- {
- ll cnt = FH;
- fn(j, 0, i)
- {
- ans[a[j][0]][0] = cnt;
- cnt--;
- }
- cnt = n - i;
- fn(j, i, n)
- {
- ans[a[j][0]][0] = cnt;
- cnt--;
- }
- fnn(j, 0, n)
- {
- cnt = FH;
- fn(q, 0, j)
- {
- ans[a[q][1]][1] = cnt;
- cnt--;
- }
- cnt = n - j;
- fn(q, j, n)
- {
- ans[a[q][1]][1] = cnt;
- cnt--;
- }
- if (create_ans() == d)
- {
- cout << "Possible\n";
- fn(q, 0, 2)
- {
- fn(z, 0, n)
- cout << ans[a[z][q]][q] << ' ';
- cout << endl;
- }
- return;
- }
- }
- }
- cout << "Impossible" << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement