Submission #1285259

#TimeUsernameProblemLanguageResultExecution timeMemory
1285259goulthenPermutation Game (APIO25_permgame)C++20
24 / 100
4 ms412 KiB
#include "permgame.h"
#include <bits/stdc++.h>
using namespace std;

#define rep(i,a,b) for(int i = a; i <= b; ++i)
#define pb push_back
#define fi first
#define se second
#define pii pair<int,int>

int Alice(int m, int e, std::vector<int> u, std::vector<int> v, int n, std::vector<int> p) {
    int cnt = 0;
    rep(i,0,n-1) if (p[i]==i) cnt++;
    if(cnt>=n-m+1) return cnt;
    int opt = cnt;
    vector<bool> mk(n);
    rep(i,0,n-1) {
        if(p[i]==i || mk[i]) continue;
        int st = i,sz=0;
        while (!mk[st]){
            sz++;
            mk[st]=1;
            st=p[st];
        }
        if(sz%2==1) opt++;
    }


    while(1){
        vector<int> t(m);
        bool ok = 1;
        rep(i,0,n-1) {
            if(p[p[i]] == i) continue;
            ok=0;
            t[0] = i;
            t[1] = p[i];
            t[2] = p[p[i]];
        }
        if(ok)break;

        int k = Bob(t);
        swap(p[t[u[k]]], p[t[v[k]]]);
        cnt = 0;
        rep(i,0,n-1) if (p[i]==i) cnt++;
        if(cnt==opt)break;
    }

    return cnt;

}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...