Submission #861257

#TimeUsernameProblemLanguageResultExecution timeMemory
861257IrateCryptography (NOI20_crypto)C++14
25 / 100
25 ms5604 KiB
#include<bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int mxN = 3e5 + 5;
int fact[mxN];
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int n;
    cin >> n;
    vector<int>v(n);
    for(int i = 0;i < n;++i){
        cin >> v[i];
    }
    fact[0] = fact[1] = 1;
    for(int i = 2;i <= n;++i){
        fact[i] = (long long)fact[i - 1] * i % MOD;
    }
    if(n >= 1 && n <= 8){
        vector<int>cpy = v;
        sort(cpy.begin(), cpy.end());
        int cnt = 1;
        do{
            bool check = 1;
            for(int i = 0;i < n;++i){
                if(cpy[i] != v[i]){
                    check = 0;
                    break;
                }
            }
            if(check){
                cout << cnt;
                return 0;
            }
            cnt++;
        }while(next_permutation(cpy.begin(), cpy.end()));
    }
    if(v[1] == 1){
        cout << (((long long)v[0] - 1) * fact[n - 1] % MOD + 1) % MOD;
    }
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...