Submission #47878221
Source Code Expand
#include<bits/stdc++.h>
#define ll long long
#define db double
#define ull unsigned long long
#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define FR first
#define SE second
using namespace std;
inline int read() {
int x = 0; bool op = false;
char c = getchar();
while(!isdigit(c))op |= (c == '-'), c = getchar();
while(isdigit(c))x = (x << 1) + (x << 3) + (c ^ 48), c = getchar();
return op ? -x : x;
}
const int N = 5e5 + 10;
const int P = 998244353;
void add(int &a, int b) {a += b; a >= P ? a -= P : 0;}
void sub(int &a, int b) {a -= b; a < 0 ? a += P : 0;}
int n;
int nxt[N], sum[N], a[N], b[N], f[N], d[N];
int calc(int l, int r) {
for(int i = l; i <= r; i++)a[i - l + 1] = a[i], b[i - l + 1] = b[i];
int n = r - l + 1;
// printf("%d\n", n);
for(int i = 0; i <= n; i++)d[i] = f[i] = sum[i] = 0;
int ans = 1;
for(int i = 1; i <= n; i++) {
int s1 = 0, s2 = 1;
add(d[i], d[i - 1]); f[i] = d[i];
int pos = upper_bound(b + 1, b + 1 + n, a[i]) - b + 1;
pos = min(pos, i);
sum[i] = (sum[i - 1] + f[i]) % P;
s1 = (sum[i - 1] - sum[pos - 1] + P) % P;
s2 = (sum[pos - 1] + 1) % P;
pos = lower_bound(a + 1, a + 1 + n, b[i]) - a - 1;
add(d[i + 1], (s1 + s2) % P); sub(d[pos + 1], (s1 + s2) % P);
if(pos + 1 <= n)add(d[pos + 1], s1);
add(ans, s1); add(ans, f[i]);
// printf("f:%d %d %d %d\n", i, f[i], s1, s2);
}
// printf("ans:%d\n", ans);
return ans;
}
int main() {
n = read();
for(int i = 1; i <= n; i++)a[i] = read(), b[i] = read();
int ans = 1;
for(int i = 1; i <= n; i++) {
int k = i;
while(k < n && a[k + 1] <= b[k])k++;
ans = 1ll * ans * calc(i, k) % P;
i = k;
}
printf("%d\n", ans);
return 0;
}
Submission Info
| Submission Time |
|
| Task |
C - First Come First Serve |
| User |
thebighead |
| Language |
C++ 20 (gcc 12.2) |
| Score |
800 |
| Code Size |
1784 Byte |
| Status |
AC |
| Exec Time |
62 ms |
| Memory |
13644 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
800 / 800 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
01.txt, 02.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, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 01.txt |
AC |
1 ms |
3564 KiB |
| 02.txt |
AC |
1 ms |
3676 KiB |
| 03.txt |
AC |
1 ms |
3720 KiB |
| 04.txt |
AC |
1 ms |
3692 KiB |
| 05.txt |
AC |
1 ms |
3720 KiB |
| 06.txt |
AC |
1 ms |
3892 KiB |
| 07.txt |
AC |
1 ms |
3720 KiB |
| 08.txt |
AC |
1 ms |
3812 KiB |
| 09.txt |
AC |
1 ms |
3692 KiB |
| 10.txt |
AC |
1 ms |
3788 KiB |
| 11.txt |
AC |
1 ms |
3836 KiB |
| 12.txt |
AC |
1 ms |
3732 KiB |
| 13.txt |
AC |
1 ms |
3864 KiB |
| 14.txt |
AC |
1 ms |
3928 KiB |
| 15.txt |
AC |
2 ms |
4076 KiB |
| 16.txt |
AC |
5 ms |
4508 KiB |
| 17.txt |
AC |
8 ms |
5568 KiB |
| 18.txt |
AC |
17 ms |
6476 KiB |
| 19.txt |
AC |
49 ms |
11340 KiB |
| 20.txt |
AC |
62 ms |
13564 KiB |
| 21.txt |
AC |
62 ms |
13440 KiB |
| 22.txt |
AC |
62 ms |
13468 KiB |
| 23.txt |
AC |
29 ms |
7716 KiB |
| 24.txt |
AC |
29 ms |
7732 KiB |
| 25.txt |
AC |
45 ms |
7708 KiB |
| 26.txt |
AC |
59 ms |
8472 KiB |
| 27.txt |
AC |
60 ms |
13424 KiB |
| 28.txt |
AC |
52 ms |
13644 KiB |
| 29.txt |
AC |
48 ms |
13532 KiB |
| 30.txt |
AC |
43 ms |
13364 KiB |
| 31.txt |
AC |
43 ms |
13620 KiB |
| 32.txt |
AC |
40 ms |
13564 KiB |
| 33.txt |
AC |
38 ms |
13584 KiB |