B. Petr and Permutations | Codeforces Round #485 (Div. 1)

転倒数の偶奇は操作回数のそれと等しい。

 l, r \in \mathbb{N}, 1 \leq  l \lt r \leq Nとおく。 l番目の要素とr番目の要素を交換したとする。 l番目とr番目の間にz個の要素があるとする。
また、そのうち、もとのl番目より大きい要素をgL個, 小さい要素をlL(=z-gL)個とする。 まずl番目と間z個の関係だけで転倒数の増減を見ると
gL - lL = gL - (z-gL) = 2gL-z
だけ転倒数が増減する。
同様にr番目より大きい要素をgR個, 小さい要素をlR(=z-gR)個とすると、r番目と間の要素で
lR - gR = (z-gR)-gR = z-2gR
だけ増減する。 更に、l番目とr番目の関係だけ見ると転倒数が+-1だけ増減するので全体で
(2gL-z)+(z-2gR)+-1=2(gL-gR)+-1
だけ転倒数が増減することがわかる。よって、1回の操作での転倒数の増減は常に奇数

long long inversionNumber(const vector<int> &a) {
    long long res = 0;
    int n = (int)a.size();
    BinaryIndexedTree<long long> bit(n + 1);
    for (int x : a) {
        res += bit.sum(x + 1, n + 1);
        bit.add(x, 1);
    }
    return res;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout << fixed << setprecision(20);

    int N;
    cin >> N;
    vi A(N);
    each(a, A)cin >> a, --a;
    ll inv = inversionNumber(A);
    string re = "Um_nik";
    if (3 * N % 2 == inv % 2)re = "Petr";
    cout << re << endl;
}