Submission #1362056

#TimeUsernameProblemLanguageResultExecution timeMemory
1362056kalkaperPermutation Game (APIO25_permgame)C++20
12 / 100
1 ms344 KiB
#include "permgame.h"
#include <vector>
#include <utility>
#include <bits/stdc++.h>
using namespace std;

int Alice(int m, int e, std::vector<int> u, std::vector<int> v, int n, std::vector<int> p) {
    assert(m==2||e>m||(e==m&&m==3));
    vector<int> t(m);
    if(m==2){
        for(int i=0;i<n;i++){
            if(p[i]==i)continue;
            for(int j=i+1;j<n;j++){
                if(p[j]==i){
                    t[0]=i;
                    t[1]=j;
                    int idx=Bob(t);
                    swap(p[t[u[idx]]],p[t[v[idx]]]);
                }
            }
        }
        return n;
    }
    else if(e>m){
        int ans=0;
        for(int i=0;i<n;i++){
            if(p[i]==i)ans++;
        }
        return ans;
    }
    else if(e==m&&m==3){
        vector<bool> vis(n,false);
        int ans=0;
        for(int i=0;i<n;i++){
            if(vis[i])continue;
            if(p[i]==i){
                ans++;
                continue;
            }
            int cnt=0;
            for(int cur=i;;cur=p[cur]){
                // cerr<<cur<<' '<<p[cur]<<endl;
                vis[cur]=true;
                cnt++;
                if(p[cur]==i)break;
            }
            // cerr<<endl;

            if(cnt==3){
                t[0]=i,t[1]=p[t[0]],t[2]=p[t[1]];
                int idx=Bob(t);
                swap(p[t[u[idx]]],p[t[v[idx]]]);
                ans++;
            }
        }
        return ans;
    }
    return 100;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...