Permutation Game

发布时间 2023-03-26 15:27:07作者: kkidd
#include<iostream>
using namespace std;

const int N=5e5+10;

int n;
int a[N];

void solve()
{
    scanf("%d",&n);
    int cnt1=0,cnt2=0,cnt3=0;
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
        a[i]--;
    }
    for(int i=0;i<n;i++)//把a[i]==i&&a[i]==n-i-1的情况省略了
    {
        if(i==a[i]&&a[i]!=n-i-1) cnt1++;
        else if(a[i]!=i&&a[i]==n-i-1) cnt2++;
        else if(i!=a[i]&&a[i]!=n-i-1) cnt3++;
    }
    //最坏的情况是先手改变cnt2+cnt3个颜色,后手翻cnt1个颜色,如果这样做,cnt1>=cnt2+cnt3,那么先手必胜,其他的也是同理
    if(cnt2+cnt3<=cnt1) puts("First");
    else if(cnt1+cnt3<cnt2) puts("Second");
    else puts("Tie");
}
int main()
{
    int T;
    cin>>T;
    while(T--) solve();
    return 0;
}