Submission #733877

#TimeUsernameProblemLanguageResultExecution timeMemory
733877vjudge1Cryptography (NOI20_crypto)C++17
26 / 100
1073 ms4952 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long 
const ll d = 1e9 + 7;
ll ft(ll n) {
    ll ans = 1;
    for(ll i = 2; i <= n; i++) {
        ans *= i;
        ans %= d;
    }
    return ans;
}
int main() {
    ll n;
    cin >> n;
    vector <ll> v(n), v1;
    for(ll i = 0; i < n; i++) {
        cin >> v[i];
    }
    v1 = v;
    ll ans = 1;
    sort(v1.begin(), v1.end());
    if(v == v1) {
        cout << 1;
        return 0;
    }
    reverse(v1.begin(), v1.end());
    if(v1 == v) {
        cout << n;
        return 0;
    }
    else reverse(v1.begin(), v1.end());
    for(ll i = 0; i < v.size(); i++) {
        for(ll j = 0; j < v1.size(); j++) {
            if(v[i] == v1[j]) {
                n--;
                ans += ft(n) * j;
                ans %= d;
                auto it = v1.begin() + j;
                auto it1 = v.begin() + i;
                v1.erase(it);
                v.erase(it1);
                i--;
                j--;
                break;
            }
        }
    }
    cout << ans;
}

Compilation message (stderr)

Crypto.cpp: In function 'int main()':
Crypto.cpp:33:21: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |     for(ll i = 0; i < v.size(); i++) {
      |                   ~~^~~~~~~~~~
Crypto.cpp:34:25: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   34 |         for(ll j = 0; j < v1.size(); j++) {
      |                       ~~^~~~~~~~~~~
#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...