Submission #16874764
Source Code Expand
#define _USE_MATH_DEFINES
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
#define forn(a, e) for (i64 a = 0; a < (i64)(e); a++)
#define forr(a, s, e) for (i64 a = s; a < (i64)(e); a++)
#define fore(e, a) for (auto& e : a)
#ifdef LOCAL
#define logv(a) {cerr << #a << " = "; fore(e, a) {cerr << e << " ";} cerr << "\n";}
#define logvp(a) {cerr << #a << " = "; fore(e, a) {cerr << "(" << e.first << ", " << e.second << ") ";} cerr << "\n";}
#define logvv(a) {cerr << #a << " = \n"; fore(r, a) { fore(e, r) {cerr << e << " ";} cerr << "\n";} }
#define logvf(a, field) {cerr << #a"."#field << " = \n"; fore(e, a) { cerr << e.field << " ";} cerr << "\n"; }
#define logvff(a, f1, f2) {cerr << #a".{"#f1 << ", "#f2 << "} = \n"; fore(e, a) { cerr << "(" << e.f1 <<", " << e.f2 << ") ";} cerr << "\n"; }
#define logs(a) cerr << #a << " = " << (a) << "\n";
#define logss(a, b) cerr << #a << " = " << (a) << ", " << #b << " = " << (b) << "\n";
#define logp(a) cerr << #a << " = " << "(" << a.first << ", " << a.second << ")" << "\n";
#define cond(pred, stmt) if (pred) { stmt }
#else
#define logv(a)
#define logvp(a)
#define logvv(a)
#define logvf(a, field)
#define logvff(a, f1, f2)
#define logs(a)
#define logss(a, b)
#define logp(a)
#define cond(pred, stmt)
#endif
using iip = pair<int, int>;
using llp = pair<i64, i64>;
using ivec = vector<int>;
using llvec = vector<i64>;
using svec = vector<string>;
template<typename T> using vec = vector<T>;
template<typename T, typename Dim>
auto make_vec(T value, Dim dim) { return vector<T>(dim, value); }
template<typename T, typename Dim1, typename... Dim>
auto make_vec(T value, Dim1 dim1, Dim... dims) { return make_vec(make_vec(value, dims...), dim1); }
template<typename T>
bool uax(T& v, const T& newv) { if (v < newv) { v = newv; return true; } else return false; }
template<typename T>
bool uin(T& v, const T& newv) { if (v > newv) { v = newv; return true; } else return false; }
template<typename T>
istream& operator>>(istream& is, vector<T>& c) { for (auto& e : c) is >> e; return is; }
template<typename T, size_t N>
istream& operator>>(istream& is, array<T, N>& c) { for (auto& e : c) is >> e; return is; }
template<typename ...T>
istream& read(T&... args) { return (cin >> ... >> args); }
static mt19937 rande(123123);
template<typename T>
T rand_int(T from, T to) { uniform_int_distribution<T> distr(from, to); return distr(rande); }
// const i64 INF = 1e18;
const int INF = 2e9;
const i64 M = 998244353;
const int MXB = 20;
using bin = bitset<MXB + 1>;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
rande.seed(chrono::steady_clock::now().time_since_epoch().count());
int n, k;
while (read(n, k)) {
vec<iip> seg(k);
forn(i, k) {
read(seg[i].first, seg[i].second);
seg[i].first; seg[i].second;
}
sort(seg.begin(), seg.end());
llvec dp(n);
llvec sdp(n + 1);
dp[0] = 1;
sdp[1] = 1;
forr(i, 1, n) {
// logs(i);
forn(j, k) {
int r = i - seg[j].first;
int l = i - seg[j].second;
if (r < 0) {
continue;
}
uax(l, 0);
dp[i] += (M + sdp[r + 1] - sdp[l]) % M;
dp[i] %= M;
}
sdp[i + 1] = (sdp[i] + dp[i]) % M;
}
// logv(dp);
// logv(sdp);
cout << dp[n - 1] << endl;
}
}
Submission Info
| Submission Time |
|
| Task |
D - Leaping Tak |
| User |
msporyshev |
| Language |
C++ (GCC 9.2.1) |
| Score |
400 |
| Code Size |
3600 Byte |
| Status |
AC |
| Exec Time |
19 ms |
| Memory |
6388 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
400 / 400 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
s1.txt, s2.txt, s3.txt, s4.txt |
| All |
01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, s1.txt, s2.txt, s3.txt, s4.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 01.txt |
AC |
8 ms |
3648 KiB |
| 02.txt |
AC |
2 ms |
3452 KiB |
| 03.txt |
AC |
2 ms |
3508 KiB |
| 04.txt |
AC |
3 ms |
3640 KiB |
| 05.txt |
AC |
2 ms |
3564 KiB |
| 06.txt |
AC |
2 ms |
3548 KiB |
| 07.txt |
AC |
2 ms |
3496 KiB |
| 08.txt |
AC |
2 ms |
3604 KiB |
| 09.txt |
AC |
2 ms |
3560 KiB |
| 10.txt |
AC |
2 ms |
3576 KiB |
| 11.txt |
AC |
2 ms |
3604 KiB |
| 12.txt |
AC |
13 ms |
6384 KiB |
| 13.txt |
AC |
12 ms |
6320 KiB |
| 14.txt |
AC |
15 ms |
6244 KiB |
| 15.txt |
AC |
17 ms |
6300 KiB |
| 16.txt |
AC |
16 ms |
6356 KiB |
| 17.txt |
AC |
19 ms |
6244 KiB |
| 18.txt |
AC |
19 ms |
6316 KiB |
| 19.txt |
AC |
14 ms |
6388 KiB |
| 20.txt |
AC |
15 ms |
6288 KiB |
| 21.txt |
AC |
9 ms |
6292 KiB |
| 22.txt |
AC |
9 ms |
6320 KiB |
| 23.txt |
AC |
11 ms |
6244 KiB |
| 24.txt |
AC |
12 ms |
6292 KiB |
| s1.txt |
AC |
2 ms |
3636 KiB |
| s2.txt |
AC |
2 ms |
3612 KiB |
| s3.txt |
AC |
2 ms |
3636 KiB |
| s4.txt |
AC |
2 ms |
3564 KiB |