結果
問題 | No.616 へんなソート |
ユーザー |
|
提出日時 | 2018-02-09 17:59:35 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 79 ms / 2,000 ms |
コード長 | 1,176 bytes |
コンパイル時間 | 784 ms |
コンパイル使用メモリ | 72,268 KB |
実行使用メモリ | 76,440 KB |
最終ジャッジ日時 | 2024-10-07 18:47:57 |
合計ジャッジ時間 | 2,030 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 27 |
ソースコード
#include <iostream>#include <vector>using namespace std;int main(){int N, K;cin >> N >> K;long array_patterns[N + 1][N * (N + 1) / 2 + 1]; // now_array_size, now_inversion_numberfor(int i = 0; i <= N * (N + 1) / 2; i++){array_patterns[N][i] = (i <= K);}vector<long> array_patterns_cumulative_sum[N + 1];array_patterns_cumulative_sum[N].push_back(0);long cumulative_sum_last = 0;for(int i = 0; i <= N * (N + 1) / 2; i++){cumulative_sum_last += array_patterns[N][i];array_patterns_cumulative_sum[N].push_back(cumulative_sum_last);}for(int i = N - 1; i >= 0; i--){for(int j = 0; j <= i * (i + 1) / 2; j++){array_patterns[i][j] = (array_patterns_cumulative_sum[i + 1][i + j + 1] - array_patterns_cumulative_sum[i + 1][j]) % long(1e9 + 7);}array_patterns_cumulative_sum[i].push_back(0);long cumulative_sum = 0;for(int j = 0; j <= i * (i + 1) / 2; j++){cumulative_sum += array_patterns[i][j];array_patterns_cumulative_sum[i].push_back(cumulative_sum);}}cout << array_patterns[0][0] << endl;}