Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <algorithm>
- #include <cstring>
- #include <string>
- #include <cctype>
- #include <stack>
- #include <queue>
- #include <list>
- #include <vector>
- #include <map>
- #include <sstream>
- #include <cmath>
- #include <limits>
- #include <bitset>
- #include <utility>
- #include <set>
- #include <numeric>
- #define INF_MAX 2147483647
- #define INF_MIN -2147483647
- #define INF_LL 9223372036854775807LL
- #define INF 1000000000
- #define PI acos(-1.0)
- #define EPS 1e-9
- #define LL long long
- #define mod 1000000007
- #define pb push_back
- #define mp make_pair
- #define setzero(a) memset(a,0,sizeof(a))
- #define setdp(a) memset(a,-1,sizeof(a))
- using namespace std;
- int arr[100005],arr2[100005],R[100005],L[100005],n;
- int tree[100005],MaxVal = 100005;
- void update(LL idx, int val)
- {
- while(idx <= MaxVal && idx > 0){
- tree[idx] = tree[idx] + val;
- idx = idx + (idx & -idx);
- }
- }
- int read(LL idx)
- {
- int sum = 0;
- while (idx > 0 && idx <= MaxVal){
- sum = sum + tree[idx];
- idx = idx - (idx & -idx);
- }
- return sum;
- }
- int main()
- {
- //freopen("straight.in","r",stdin);
- //freopen("straight.out","w",stdout);
- int x,first;
- scanf("%d",&n);
- for(int i=1;i<=n;i++)
- {
- scanf("%d",&x);
- if(i == 1) first = x;
- arr[x] = i;
- arr2[i] = x;
- update(i, 1);
- }
- for(int i=1;i<=n;i++)
- R[arr2[i]] = arr2[i+1],L[arr2[i]] = arr2[i-1];
- for(int i=1;i<=n-2;i++)
- {
- scanf("%d",&x);
- if(R[x] != 0)
- L[R[x]] = L[x];
- if(L[x] != 0)
- R[L[x]] = R[x];
- if(x == first)
- first = R[x];
- int temp = read(arr[x]);
- update(1, 1);
- update(arr[x], -1);
- if((temp - i) % 2 == 1)
- {
- swap(arr[first], arr[R[first]]);
- int test = R[first];
- L[R[test]] = first;
- L[test] = 0;
- R[first] = R[test];
- R[test] = first;
- L[first] = test;
- first = test;
- }
- }
- scanf("%d",&x);
- if(x == first)
- cout << "Possible";
- else cout << "Impossible";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement