Submission #1131269


Source Code Expand

using System;
using System.Text;
using System.Collections.Generic;
class Solve{
    public Solve(){}
    StringBuilder sb;
    public static int Main(){
        new Solve().Run();
        return 0;
    }
    void Run(){
        sb = new StringBuilder();
        Calc();
        Console.Write(sb.ToString());
    }
    void Calc(){
        int N = int.Parse(Console.ReadLine());
        string[] str = Console.ReadLine().Split(' ');
        long[] x = new long[N];
        for(int i=0;i<N;i++){
            x[i] = int.Parse(str[i]);
        }
        long count = 1;
        int c = 0;
        for(int i=0;i<N;i++){
            if(x[i] >= c*2 + 1){
                c++;
            }
            else{
                count = count * (c+1) % Define.mod;
            }
        }
        Fact F = new Fact(N);
        count = count * F.GetFact(c) % Define.mod;
        sb.Append(count+"\n");
    }
}
public static class Define{
    public const long mod = 1000000007;
}
class Fact{
    public long[] f;
    public long[] rf;
    public Fact(int N){
        f = new long[N+1];
        rf = new long[N+1];
        for(int i=0;i<N+1;i++){
            if(i == 0){
                f[i] = 1;
            }
            else{
                f[i] = (f[i-1]*i)%Define.mod;
            }
        }
        for(int i=N;i>=0;i--){
            if(i == N){
                rf[i] = pow(f[N],Define.mod-2);
            }
            else{
                rf[i] = rf[i+1]*(i+1)%Define.mod;
            }
        }
    }
    public long pow(long N,long K){
        if(K == 0){
            return 1;
        }
        else if(K % 2 == 0){
            long t = pow(N,K/2);
            return t*t%Define.mod;
        }
        else{
            return N*pow(N,K-1)%Define.mod;
        }
    }
    public long GetFact(int N){
        return f[N];
    }
    public long GetConv(int N,int R){
        return ((f[N]*rf[R])%Define.mod*rf[N-R])%Define.mod;
    }
}

Submission Info

Submission Time
Task A - Robot Racing
User leign
Language C# (Mono 4.6.2.0)
Score 900
Code Size 2015 Byte
Status AC
Exec Time 63 ms
Memory 22368 KB

Judge Result

Set Name Sample Subtask All
Score / Max Score 0 / 0 500 / 500 400 / 400
Status
AC × 4
AC × 14
AC × 28
Set Name Test Cases
Sample 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt
Subtask 0_00.txt, 0_01.txt, 0_02.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt
All 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 2_00.txt, 2_01.txt, 2_02.txt, 2_03.txt, 2_04.txt, 2_05.txt, 2_06.txt, 2_07.txt, 2_08.txt, 2_09.txt, 2_10.txt, 2_11.txt, 2_12.txt
Case Name Status Exec Time Memory
0_00.txt AC 21 ms 9044 KB
0_01.txt AC 20 ms 9044 KB
0_02.txt AC 20 ms 9044 KB
0_03.txt AC 20 ms 11092 KB
1_00.txt AC 21 ms 11092 KB
1_01.txt AC 20 ms 11092 KB
1_02.txt AC 21 ms 11092 KB
1_03.txt AC 20 ms 9172 KB
1_04.txt AC 20 ms 11092 KB
1_05.txt AC 20 ms 11092 KB
1_06.txt AC 20 ms 9044 KB
1_07.txt AC 20 ms 9044 KB
1_08.txt AC 20 ms 11092 KB
1_09.txt AC 20 ms 11092 KB
1_10.txt AC 21 ms 13140 KB
2_00.txt AC 56 ms 18784 KB
2_01.txt AC 56 ms 16992 KB
2_02.txt AC 63 ms 18400 KB
2_03.txt AC 56 ms 20960 KB
2_04.txt AC 55 ms 16864 KB
2_05.txt AC 56 ms 19040 KB
2_06.txt AC 55 ms 16992 KB
2_07.txt AC 56 ms 19040 KB
2_08.txt AC 55 ms 16864 KB
2_09.txt AC 55 ms 16864 KB
2_10.txt AC 56 ms 19040 KB
2_11.txt AC 63 ms 22368 KB
2_12.txt AC 63 ms 20320 KB