結果
| 問題 |
No.801 エレベーター
|
| コンテスト | |
| ユーザー |
Kiona1018
|
| 提出日時 | 2019-09-29 16:48:14 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,150 bytes |
| コンパイル時間 | 1,700 ms |
| コンパイル使用メモリ | 169,428 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-10-03 04:30:31 |
| 合計ジャッジ時間 | 5,385 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 13 RE * 13 |
ソースコード
#include<bits/stdc++.h>
#define rep(i,n,m) for(int i = (n); i <(m); i++)
#define rrep(i,n,m) for(int i = (n) - 1; i >=(m); i--)
using namespace std;
using ll = long long;
const ll MOD = 1000000007;
// const int MAX_N = 3003;
int main()
{
ll n, m, k;
cin >> n >> m >> k;
int elev[n][2];
rep(i, 0, m)
{
int l, r;
cin >> elev[i][0] >> elev[i][1];
--elev[i][0];
}
vector<ll> cur(n, 0);
cur[0] = 1;
rep(i, 0, k)
{
vector<ll> csum(n+1, 0);
rep(j, 0, n) csum[j+1] += cur[j] + csum[j];
vector<ll> next(n+1, 0);
rep(j, 0, m)
{
ll add = csum[elev[j][1]] - csum[elev[j][0]];
next[elev[j][0]] += add;
next[elev[j][1]] -= add;
next[elev[j][0]] %= MOD;
next[elev[j][1]] %= MOD;
// cout << i << ' ' << j << ' ' << add << ' ' << next[0] << ' ' << elev[j][1] << endl;
}
rep(j, 0, n) next[j+1] += next[j], next[j+1] %= MOD;
swap(next, cur);
}
if (cur[n-1] < 0 ) cur[n-1] += MOD, cur[n-1] %= MOD;
cout << cur[n-1] << endl;
return 0;
}
Kiona1018