結果
問題 | No.616 へんなソート |
ユーザー | ikd |
提出日時 | 2017-12-17 02:45:51 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
RE
|
実行時間 | - |
コード長 | 610 bytes |
コンパイル時間 | 742 ms |
コンパイル使用メモリ | 73,084 KB |
実行使用メモリ | 56,448 KB |
最終ジャッジ日時 | 2024-12-14 23:05:22 |
合計ジャッジ時間 | 4,393 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 6 RE * 21 |
ソースコード
#include<iostream> #include<vector> #include<cassert> using namespace std; int main(){ int n, k; cin>> n>> k; int a[n]; for(int i=0; i<n; i++) cin>> a[i]; const int mod=1e9+7; vector<vector<int>> dp(n+1, vector<int>(k+1, 0)); for(int i=1; i<=n; i++) dp[i][0]=1; for(int i=2; i<=n; i++)for(int j=1; j<=k && j<=i*(i-1)/2; j++){ (dp[i][j]+=dp[i-1][j])%=mod; (dp[i][j]+=dp[i][j-1])%=mod; if(j-i>=0){ assert(dp[i][j]>=dp[i-1][j-1]); (dp[i][j]-=dp[i-1][j-i])%=mod; } } int ans=0; for(int j=0; j<=k; j++) (ans+=dp[n][j])%=mod; cout<< ans<< endl; return 0; }