답안 #251126

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
251126 2020-07-20T11:48:51 Z Sorting Calvinball championship (CEOI15_teams) C++14
20 / 100
116 ms 65540 KB
#include <bits/stdc++.h>

using namespace std;

const int k_N = 1e4 + 3;
const int k_Mod = 1e9 + 7;

int n, a[k_N];
pair<int, bool> dp[k_N][k_N][2];

int solve(int pos, int cnt, bool equal){
    if(pos == n) return 1;

    auto &[ans, solved] = dp[pos][cnt][equal];
    if(solved) return ans;

    solved = true;
    ans = 0;

    if(!equal){ 
        ans = (((long long)solve(pos + 1, cnt, false)) * cnt + solve(pos + 1, cnt + 1, false)) % k_Mod;
        return ans;
    }

    ans = (((long long)solve(pos + 1, cnt, false)) * min(cnt, a[pos] - 1)) % k_Mod;
    if(a[pos] <= cnt)
        ans += solve(pos + 1, cnt, true);
    else if(a[pos] == cnt + 1)
        ans += solve(pos + 1, cnt + 1, true);
    else if(a[pos] > cnt + 1)
        ans += solve(pos + 1, cnt + 1, false);

    ans %= k_Mod;
    return ans;
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);

    cin >> n;
    for(int i = 0; i < n; ++i)
        cin >> a[i];

    cout << solve(0, 0, true) << "\n";
}

Compilation message

teams.cpp: In function 'int solve(int, int, bool)':
teams.cpp:14:11: warning: decomposition declaration only available with -std=c++1z or -std=gnu++1z
     auto &[ans, solved] = dp[pos][cnt][equal];
           ^
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 0 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 1 ms 384 KB Output is correct
6 Correct 1 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 384 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 896 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 896 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 4480 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 17 ms 12472 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 79 ms 65540 KB Execution killed with signal 9 (could be triggered by violating memory limits)
# 결과 실행 시간 메모리 Grader output
1 Runtime error 116 ms 65540 KB Execution killed with signal 9 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 89 ms 65540 KB Execution killed with signal 9 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -