D. Tokitsukaze, CSL and Stone Game

https://codeforces.com/contest/1191/problem/D

题意:n堆石子,谁最后没有石子可取谁输,谁取完之后存在两堆相等的石子数谁输。

分情况:

1、只有一堆石子只需判断奇偶。

2、多于两堆:先手输:存在两堆相等数超过两对、存在三堆相等、存在两个0堆、只存在一对两堆(a)相等且存在一堆数为(a-1)。

3、除去以上情况后,排序,最终每个数可走a[i] - i - 1 步,判断奇偶即可。

//#include <bits/stdc++.h>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <string>
#include <stdio.h>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <string.h>
#include <vector>
#define ME(x , y) memset(x , y , sizeof(x))
#define SF(n) scanf("%d" , &n)
#define rep(i , n) for(int i = 0 ; i < n ; i ++)
#define INF  0x3f3f3f3f
#define mod 1000000007
#define PI acos(-1)
using namespace std;
typedef long long ll ;
int a[100009];
map<int , int>m;

int main()
{
    int n ;
    scanf("%d" , &n);
    for(int i = 0 ; i < n ; i++)
    {
        scanf("%d" , &a[i]);
    }
    if(n == 1)
    {
        if(a[0] % 2 == 0)
        {
            cout << "cslnb" << endl;
        }
        else{
            cout << "sjfnb" << endl ;
        }
    }
    else
    {
        int flag1 = 0 , flag2 = 0 ;
        for(int i = 0 ; i < n ; i++)
        {
            m[a[i]]++ ;
            if(m[a[i]] >= 2)
            {
                flag1++ ;
            }
        }
        if(flag1 >= 2|| m[0] >= 2)
        {
            cout << "cslnb" << endl;
        }
        else{
            ll  sum = 0 ;
            sort(a , a+n);
            for(int i = 1 ; i < n ; i++)
            {
                if(a[i] == a[i-1])
                {
                    if(i >= 2 && a[i] == a[i-2]+1)
                    {
                        cout << "cslnb" << endl ;
                        return 0 ;
                    }
                }
            }
            for(int i = 0 ; i < n ; i++)
            {
                sum += a[i] - i ;
            }
            if(sum % 2 == 0)
            {
                cout << "cslnb" << endl ;
            }
            else{
                cout << "sjfnb" << endl ;
            }
        }
    }

    return 0 ;
}

猜你喜欢

转载自www.cnblogs.com/nonames/p/12240791.html