#include<bits/stdc++.h>
using namespace std;
long long n , m , in [500005] , de [500005] , inmx [500005] , demx [500005] , mod = 1e9 + 7;
long long dp [500005][28] , st [500005][21][3] ;
int main()
{
cin >> n >> m;
for ( int i = 0 ; i <= n ; i ++ )
{
in [i] = 1e9;
de [i] = 1e9;
}
for ( int i = 0 ; i < m ; i ++ )
{
long long x , y;
cin >> x >> y;
if ( x < y )
{
de [x] = min ( de [x] , y );
demx [x] = max ( demx [x] , y );
st [x][0][0] = max ( st [x][0][0] , y );
}
if ( x > y )
{
in [y] = min ( in [y] , x );
inmx [y] = max ( inmx [y] , x );
st [y][0][1] = max ( st [y][0][1] , x );
}
}
for ( int i = 0 ; i < 2 ; i ++ )
{
for ( int j = 1 ; j <= 20 ; j ++ )
{
for ( int z = 1 ; z <= n ; z ++ )
{
st [z][j][i] = st [z][ j - 1 ][i];
if ( z >= ( 1 << ( j - 1 ) ) ) st [z][j][i] = max ( st [z][j][i] , st [ z - ( 1 << ( j - 1 ) ) ][ j - 1 ][i] );
}
}
}
for ( int i = 0 ; i < 26 ; i ++ ) dp [1][i] = 1;
for ( int i = 2 ; i <= n ; i ++ )
{
int lde = i , lin = i , x = i - 1;
for ( int j = 20 ; j >= 0 ; j -- )
{
if ( x < ( 1 << j ) ) continue;
if ( st [x][j][0] < i ) x -= ( 1 << j );
}
lin = x + 1;
if ( lin != i )
{
for ( int j = 0 ; j < 26 ; j ++ )
{
long long sum = 0;
for ( int z = j + 1 ; z < 26 ; z ++ ) sum = ( sum + dp [ i - 1 ][z] - dp [ lin - 1 ][z] + mod ) % mod;
dp [i][j] = ( dp [i][j] + sum ) % mod;
}
}
x = i - 1;
for ( int j = 20 ; j >= 0 ; j -- )
{
if ( x < ( 1 << j ) ) continue;
if ( st [x][j][1] < i ) x -= ( 1 << j );
}
lde = x + 1;
if ( lde != i )
{
for ( int j = 0 ; j < 26 ; j ++ )
{
long long sum = 0;
for ( int z = j - 1 ; z >= 0 ; z -- ) sum = ( sum + dp [ i - 1 ][z] - dp [ lde - 1 ][z] + mod ) % mod;
dp [i][j] = ( dp [i][j] + sum ) % mod;
}
}
for ( int j = 0 ; j < 26 ; j ++ ) dp [i][j] = ( dp [i][j] + dp [ i - 1 ][j] ) % mod;
}
long long sum = 0;
for ( int i = 0 ; i < 26 ; i ++ ) sum = ( sum + dp [n][i] ) % mod;
cout << sum;
}
/*
2 2 1
3 2 3
4 4 3
5 5 3
6 6 6
7 6 3
*/
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Correct |
0 ms |
340 KB |
Output is correct |
6 |
Correct |
0 ms |
340 KB |
Output is correct |
7 |
Correct |
0 ms |
340 KB |
Output is correct |
8 |
Correct |
0 ms |
340 KB |
Output is correct |
9 |
Correct |
0 ms |
340 KB |
Output is correct |
10 |
Correct |
0 ms |
340 KB |
Output is correct |
11 |
Correct |
1 ms |
340 KB |
Output is correct |
12 |
Correct |
0 ms |
340 KB |
Output is correct |
13 |
Correct |
1 ms |
340 KB |
Output is correct |
14 |
Correct |
1 ms |
340 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Correct |
0 ms |
340 KB |
Output is correct |
6 |
Correct |
0 ms |
340 KB |
Output is correct |
7 |
Correct |
0 ms |
340 KB |
Output is correct |
8 |
Correct |
0 ms |
340 KB |
Output is correct |
9 |
Correct |
0 ms |
340 KB |
Output is correct |
10 |
Correct |
0 ms |
340 KB |
Output is correct |
11 |
Correct |
1 ms |
340 KB |
Output is correct |
12 |
Correct |
0 ms |
340 KB |
Output is correct |
13 |
Correct |
1 ms |
340 KB |
Output is correct |
14 |
Correct |
1 ms |
340 KB |
Output is correct |
15 |
Correct |
2 ms |
512 KB |
Output is correct |
16 |
Correct |
1 ms |
468 KB |
Output is correct |
17 |
Correct |
1 ms |
468 KB |
Output is correct |
18 |
Correct |
1 ms |
468 KB |
Output is correct |
19 |
Correct |
1 ms |
468 KB |
Output is correct |
20 |
Correct |
1 ms |
468 KB |
Output is correct |
21 |
Correct |
1 ms |
468 KB |
Output is correct |
22 |
Correct |
4 ms |
468 KB |
Output is correct |
23 |
Correct |
1 ms |
468 KB |
Output is correct |
24 |
Correct |
1 ms |
468 KB |
Output is correct |
25 |
Correct |
1 ms |
468 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
340 KB |
Output is correct |
3 |
Correct |
0 ms |
340 KB |
Output is correct |
4 |
Correct |
0 ms |
340 KB |
Output is correct |
5 |
Correct |
1743 ms |
372096 KB |
Output is correct |
6 |
Correct |
1727 ms |
378748 KB |
Output is correct |
7 |
Correct |
1737 ms |
378724 KB |
Output is correct |
8 |
Correct |
1747 ms |
378680 KB |
Output is correct |
9 |
Correct |
1730 ms |
378856 KB |
Output is correct |
10 |
Correct |
60 ms |
15384 KB |
Output is correct |
11 |
Correct |
1 ms |
468 KB |
Output is correct |
12 |
Correct |
1 ms |
340 KB |
Output is correct |
13 |
Correct |
1760 ms |
378820 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Correct |
0 ms |
340 KB |
Output is correct |
6 |
Correct |
0 ms |
340 KB |
Output is correct |
7 |
Correct |
0 ms |
340 KB |
Output is correct |
8 |
Correct |
0 ms |
340 KB |
Output is correct |
9 |
Correct |
0 ms |
340 KB |
Output is correct |
10 |
Correct |
0 ms |
340 KB |
Output is correct |
11 |
Correct |
1 ms |
340 KB |
Output is correct |
12 |
Correct |
0 ms |
340 KB |
Output is correct |
13 |
Correct |
1 ms |
340 KB |
Output is correct |
14 |
Correct |
1 ms |
340 KB |
Output is correct |
15 |
Correct |
2 ms |
512 KB |
Output is correct |
16 |
Correct |
1 ms |
468 KB |
Output is correct |
17 |
Correct |
1 ms |
468 KB |
Output is correct |
18 |
Correct |
1 ms |
468 KB |
Output is correct |
19 |
Correct |
1 ms |
468 KB |
Output is correct |
20 |
Correct |
1 ms |
468 KB |
Output is correct |
21 |
Correct |
1 ms |
468 KB |
Output is correct |
22 |
Correct |
4 ms |
468 KB |
Output is correct |
23 |
Correct |
1 ms |
468 KB |
Output is correct |
24 |
Correct |
1 ms |
468 KB |
Output is correct |
25 |
Correct |
1 ms |
468 KB |
Output is correct |
26 |
Correct |
64 ms |
15116 KB |
Output is correct |
27 |
Correct |
78 ms |
15008 KB |
Output is correct |
28 |
Correct |
84 ms |
15032 KB |
Output is correct |
29 |
Correct |
64 ms |
15152 KB |
Output is correct |
30 |
Correct |
65 ms |
15176 KB |
Output is correct |
31 |
Correct |
267 ms |
15140 KB |
Output is correct |
32 |
Correct |
61 ms |
15152 KB |
Output is correct |
33 |
Correct |
60 ms |
15164 KB |
Output is correct |
34 |
Correct |
69 ms |
15168 KB |
Output is correct |
35 |
Correct |
269 ms |
15124 KB |
Output is correct |
36 |
Correct |
92 ms |
14820 KB |
Output is correct |
37 |
Correct |
76 ms |
15120 KB |
Output is correct |
38 |
Correct |
77 ms |
15184 KB |
Output is correct |
39 |
Correct |
86 ms |
15200 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Correct |
0 ms |
340 KB |
Output is correct |
6 |
Correct |
0 ms |
340 KB |
Output is correct |
7 |
Correct |
0 ms |
340 KB |
Output is correct |
8 |
Correct |
0 ms |
340 KB |
Output is correct |
9 |
Correct |
0 ms |
340 KB |
Output is correct |
10 |
Correct |
0 ms |
340 KB |
Output is correct |
11 |
Correct |
1 ms |
340 KB |
Output is correct |
12 |
Correct |
0 ms |
340 KB |
Output is correct |
13 |
Correct |
1 ms |
340 KB |
Output is correct |
14 |
Correct |
1 ms |
340 KB |
Output is correct |
15 |
Correct |
2 ms |
512 KB |
Output is correct |
16 |
Correct |
1 ms |
468 KB |
Output is correct |
17 |
Correct |
1 ms |
468 KB |
Output is correct |
18 |
Correct |
1 ms |
468 KB |
Output is correct |
19 |
Correct |
1 ms |
468 KB |
Output is correct |
20 |
Correct |
1 ms |
468 KB |
Output is correct |
21 |
Correct |
1 ms |
468 KB |
Output is correct |
22 |
Correct |
4 ms |
468 KB |
Output is correct |
23 |
Correct |
1 ms |
468 KB |
Output is correct |
24 |
Correct |
1 ms |
468 KB |
Output is correct |
25 |
Correct |
1 ms |
468 KB |
Output is correct |
26 |
Correct |
0 ms |
340 KB |
Output is correct |
27 |
Correct |
0 ms |
340 KB |
Output is correct |
28 |
Correct |
0 ms |
340 KB |
Output is correct |
29 |
Correct |
0 ms |
340 KB |
Output is correct |
30 |
Correct |
1743 ms |
372096 KB |
Output is correct |
31 |
Correct |
1727 ms |
378748 KB |
Output is correct |
32 |
Correct |
1737 ms |
378724 KB |
Output is correct |
33 |
Correct |
1747 ms |
378680 KB |
Output is correct |
34 |
Correct |
1730 ms |
378856 KB |
Output is correct |
35 |
Correct |
60 ms |
15384 KB |
Output is correct |
36 |
Correct |
1 ms |
468 KB |
Output is correct |
37 |
Correct |
1 ms |
340 KB |
Output is correct |
38 |
Correct |
1760 ms |
378820 KB |
Output is correct |
39 |
Correct |
64 ms |
15116 KB |
Output is correct |
40 |
Correct |
78 ms |
15008 KB |
Output is correct |
41 |
Correct |
84 ms |
15032 KB |
Output is correct |
42 |
Correct |
64 ms |
15152 KB |
Output is correct |
43 |
Correct |
65 ms |
15176 KB |
Output is correct |
44 |
Correct |
267 ms |
15140 KB |
Output is correct |
45 |
Correct |
61 ms |
15152 KB |
Output is correct |
46 |
Correct |
60 ms |
15164 KB |
Output is correct |
47 |
Correct |
69 ms |
15168 KB |
Output is correct |
48 |
Correct |
269 ms |
15124 KB |
Output is correct |
49 |
Correct |
92 ms |
14820 KB |
Output is correct |
50 |
Correct |
76 ms |
15120 KB |
Output is correct |
51 |
Correct |
77 ms |
15184 KB |
Output is correct |
52 |
Correct |
86 ms |
15200 KB |
Output is correct |
53 |
Correct |
2130 ms |
372636 KB |
Output is correct |
54 |
Correct |
2482 ms |
371468 KB |
Output is correct |
55 |
Correct |
2044 ms |
378348 KB |
Output is correct |
56 |
Correct |
2143 ms |
378332 KB |
Output is correct |
57 |
Correct |
2076 ms |
378632 KB |
Output is correct |
58 |
Correct |
2045 ms |
378628 KB |
Output is correct |
59 |
Correct |
2088 ms |
378636 KB |
Output is correct |
60 |
Correct |
2323 ms |
378664 KB |
Output is correct |
61 |
Correct |
2854 ms |
364204 KB |
Output is correct |
62 |
Correct |
2484 ms |
376952 KB |
Output is correct |
63 |
Correct |
2493 ms |
375356 KB |
Output is correct |
64 |
Correct |
2718 ms |
373708 KB |
Output is correct |