# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
620777 | 2022-08-03T08:59:56 Z | mdn2002 | Horses (IOI15_horses) | C++14 | 1326 ms | 73764 KB |
#include "horses.h" #include<bits/stdc++.h> using namespace std; long long n , m , mod = 1e9 + 7 , x [500005] , y [500005] , tree [2000006]; pair < long long , long long > treemx [2000006]; set < int > vall; void up ( int nod , int l , int r , int x , long long val ) { if ( x < l || r < x ) return; if ( l == r ) { tree [nod] = val; return; } int mid = ( l + r ) / 2; up ( nod * 2 , l , mid , x , val ); up ( nod * 2 + 1 , mid + 1 , r , x , val ); tree [nod] = ( tree [ nod * 2 ] * tree [ nod * 2 + 1 ] ) % mod; } long long qr ( int nod , int l , int r , int x , int y ) { if ( y < l || r < x ) return 1; if ( x <= l && r <= y ) return tree [nod]; int mid = ( l + r ) / 2; return ( qr ( nod * 2 , l , mid , x , y ) * qr ( nod * 2 + 1 , mid + 1 , r , x , y ) ) % mod; } void upmx ( int nod , int l , int r , int x , long long val ) { if ( x < l || r < x ) return; if ( l == r ) { treemx [nod] = { val , l }; return; } int mid = ( l + r ) / 2; upmx ( nod * 2 , l , mid , x , val ); upmx ( nod * 2 + 1 , mid + 1 , r , x , val ); treemx [nod] = max ( treemx [ nod * 2 ] , treemx [ nod * 2 + 1 ] ); } pair < long long , long long > qrmx ( int nod , int l , int r , int x , int y ) { if ( y < l || r < x ) return { -1 , -1 }; if ( x <= l && r <= y ) return treemx [nod]; int mid = ( l + r ) / 2; return max ( qrmx ( nod * 2 , l , mid , x , y ) , qrmx ( nod * 2 + 1 , mid + 1 , r , x , y ) ); } long long get ( ) { vector < int > ids , nig; ids . push_back ( n ); if ( vall . size () ) { set < int > :: iterator it = -- vall . end (); for ( it ; ; it -- ) { ids . push_back ( * it ); if ( it == vall . begin () ) break; if ( ids . size () >= 50 ) break; } } /* for ( int i = n - 1 ; i >= 0 ; i -- ) { if ( x [i] > 1 ) ids . push_back ( i ) ; } */ if ( ids [ ids . size () - 1 ] != 0 ) ids . push_back ( 0 ); reverse ( ids . begin () , ids . end () ); for ( int i = 0 ; i < ids . size () ; i ++ ) { if ( i ) { int id = qrmx ( 1 , 0 , n , ids [ i - 1 ] + 1 , ids [i] - 1 ) . second; if ( id != -1 ) nig . push_back ( id ); } if ( i != ids . size () - 1 ) nig . push_back ( ids [i] ); } long long bst = 0 , mul = 1; for ( int i = 1 ; i < nig . size () ; i ++ ) { int id = nig [i]; mul *= x [id]; if ( mul > y [bst] ) { mul = 1; bst = id; continue; } long long almul = mul * y [id]; if ( almul > y [bst] ) { mul = 1; bst = id; } } long long ans = qr ( 1 , 0 , n , 0 , bst ); ans = ( ans * y [bst] ) % mod; return ans; } int init(int N, int X[], int Y[]) { n = N; for ( int i = 0 ; i < n ; i ++ ) { x [i] = X [i]; if ( x [i] > 1 ) vall . insert ( i ); up ( 1 , 0 , n , i , x [i] ); } for ( int i = 0 ; i < n ; i ++ ) { y [i] = Y [i]; upmx ( 1 , 0 , n , i , y [i] ); } return get (); } int updateX(int pos, int val) { if ( x [pos] > 1 ) vall . erase ( vall . lower_bound ( pos ) ); x [pos] = val; if ( x [pos] > 1 ) vall . insert ( pos ); up ( 1 , 0 , n , pos , x [pos] ); return get (); } int updateY(int pos, int val) { y [pos] = val; upmx ( 1 , 0 , n , pos , val ); return get (); }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 212 KB | Output is correct |
2 | Correct | 0 ms | 212 KB | Output is correct |
3 | Correct | 0 ms | 212 KB | Output is correct |
4 | Correct | 1 ms | 212 KB | Output is correct |
5 | Correct | 1 ms | 212 KB | Output is correct |
6 | Correct | 0 ms | 212 KB | Output is correct |
7 | Correct | 1 ms | 212 KB | Output is correct |
8 | Correct | 0 ms | 212 KB | Output is correct |
9 | Correct | 0 ms | 212 KB | Output is correct |
10 | Correct | 0 ms | 212 KB | Output is correct |
11 | Correct | 0 ms | 212 KB | Output is correct |
12 | Correct | 1 ms | 212 KB | Output is correct |
13 | Correct | 0 ms | 212 KB | Output is correct |
14 | Correct | 1 ms | 212 KB | Output is correct |
15 | Correct | 0 ms | 212 KB | Output is correct |
16 | Correct | 0 ms | 212 KB | Output is correct |
17 | Correct | 1 ms | 212 KB | Output is correct |
18 | Correct | 0 ms | 212 KB | Output is correct |
19 | Correct | 1 ms | 212 KB | Output is correct |
20 | Correct | 0 ms | 212 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 212 KB | Output is correct |
2 | Correct | 1 ms | 212 KB | Output is correct |
3 | Correct | 1 ms | 212 KB | Output is correct |
4 | Correct | 1 ms | 212 KB | Output is correct |
5 | Correct | 1 ms | 212 KB | Output is correct |
6 | Correct | 0 ms | 212 KB | Output is correct |
7 | Correct | 1 ms | 212 KB | Output is correct |
8 | Correct | 1 ms | 212 KB | Output is correct |
9 | Correct | 0 ms | 212 KB | Output is correct |
10 | Correct | 1 ms | 212 KB | Output is correct |
11 | Correct | 0 ms | 212 KB | Output is correct |
12 | Correct | 0 ms | 212 KB | Output is correct |
13 | Correct | 0 ms | 212 KB | Output is correct |
14 | Correct | 1 ms | 212 KB | Output is correct |
15 | Correct | 0 ms | 212 KB | Output is correct |
16 | Correct | 0 ms | 212 KB | Output is correct |
17 | Correct | 0 ms | 212 KB | Output is correct |
18 | Correct | 0 ms | 212 KB | Output is correct |
19 | Correct | 1 ms | 212 KB | Output is correct |
20 | Correct | 0 ms | 212 KB | Output is correct |
21 | Correct | 0 ms | 212 KB | Output is correct |
22 | Correct | 0 ms | 212 KB | Output is correct |
23 | Correct | 8 ms | 340 KB | Output is correct |
24 | Correct | 5 ms | 340 KB | Output is correct |
25 | Correct | 7 ms | 340 KB | Output is correct |
26 | Correct | 6 ms | 340 KB | Output is correct |
27 | Correct | 6 ms | 340 KB | Output is correct |
28 | Correct | 6 ms | 340 KB | Output is correct |
29 | Correct | 2 ms | 340 KB | Output is correct |
30 | Correct | 7 ms | 456 KB | Output is correct |
31 | Correct | 3 ms | 340 KB | Output is correct |
32 | Correct | 5 ms | 340 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1241 ms | 61252 KB | Output is correct |
2 | Correct | 1252 ms | 61992 KB | Output is correct |
3 | Correct | 1231 ms | 62180 KB | Output is correct |
4 | Correct | 1309 ms | 62152 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 212 KB | Output is correct |
2 | Correct | 0 ms | 212 KB | Output is correct |
3 | Correct | 0 ms | 212 KB | Output is correct |
4 | Correct | 0 ms | 212 KB | Output is correct |
5 | Correct | 0 ms | 212 KB | Output is correct |
6 | Correct | 0 ms | 212 KB | Output is correct |
7 | Correct | 0 ms | 212 KB | Output is correct |
8 | Correct | 0 ms | 212 KB | Output is correct |
9 | Correct | 0 ms | 212 KB | Output is correct |
10 | Correct | 0 ms | 212 KB | Output is correct |
11 | Correct | 0 ms | 212 KB | Output is correct |
12 | Correct | 0 ms | 212 KB | Output is correct |
13 | Correct | 0 ms | 212 KB | Output is correct |
14 | Correct | 0 ms | 212 KB | Output is correct |
15 | Correct | 0 ms | 212 KB | Output is correct |
16 | Correct | 0 ms | 212 KB | Output is correct |
17 | Correct | 0 ms | 212 KB | Output is correct |
18 | Correct | 0 ms | 212 KB | Output is correct |
19 | Correct | 0 ms | 212 KB | Output is correct |
20 | Correct | 0 ms | 212 KB | Output is correct |
21 | Correct | 0 ms | 212 KB | Output is correct |
22 | Correct | 0 ms | 212 KB | Output is correct |
23 | Correct | 8 ms | 340 KB | Output is correct |
24 | Correct | 6 ms | 424 KB | Output is correct |
25 | Correct | 6 ms | 340 KB | Output is correct |
26 | Correct | 5 ms | 452 KB | Output is correct |
27 | Correct | 7 ms | 340 KB | Output is correct |
28 | Correct | 5 ms | 340 KB | Output is correct |
29 | Correct | 2 ms | 340 KB | Output is correct |
30 | Correct | 5 ms | 340 KB | Output is correct |
31 | Correct | 4 ms | 340 KB | Output is correct |
32 | Correct | 5 ms | 416 KB | Output is correct |
33 | Correct | 493 ms | 36784 KB | Output is correct |
34 | Correct | 352 ms | 36812 KB | Output is correct |
35 | Correct | 425 ms | 60268 KB | Output is correct |
36 | Correct | 488 ms | 60216 KB | Output is correct |
37 | Correct | 382 ms | 36876 KB | Output is correct |
38 | Correct | 388 ms | 48652 KB | Output is correct |
39 | Correct | 276 ms | 36684 KB | Output is correct |
40 | Correct | 455 ms | 60236 KB | Output is correct |
41 | Correct | 311 ms | 36764 KB | Output is correct |
42 | Correct | 322 ms | 36696 KB | Output is correct |
43 | Correct | 349 ms | 60108 KB | Output is correct |
44 | Correct | 345 ms | 60072 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 212 KB | Output is correct |
2 | Correct | 0 ms | 212 KB | Output is correct |
3 | Correct | 0 ms | 212 KB | Output is correct |
4 | Correct | 0 ms | 212 KB | Output is correct |
5 | Correct | 0 ms | 212 KB | Output is correct |
6 | Correct | 1 ms | 212 KB | Output is correct |
7 | Correct | 1 ms | 212 KB | Output is correct |
8 | Correct | 0 ms | 212 KB | Output is correct |
9 | Correct | 0 ms | 212 KB | Output is correct |
10 | Correct | 1 ms | 212 KB | Output is correct |
11 | Correct | 0 ms | 212 KB | Output is correct |
12 | Correct | 1 ms | 212 KB | Output is correct |
13 | Correct | 1 ms | 212 KB | Output is correct |
14 | Correct | 1 ms | 212 KB | Output is correct |
15 | Correct | 1 ms | 212 KB | Output is correct |
16 | Correct | 1 ms | 212 KB | Output is correct |
17 | Correct | 0 ms | 212 KB | Output is correct |
18 | Correct | 1 ms | 212 KB | Output is correct |
19 | Correct | 0 ms | 212 KB | Output is correct |
20 | Correct | 0 ms | 212 KB | Output is correct |
21 | Correct | 1 ms | 232 KB | Output is correct |
22 | Correct | 2 ms | 212 KB | Output is correct |
23 | Correct | 7 ms | 416 KB | Output is correct |
24 | Correct | 5 ms | 340 KB | Output is correct |
25 | Correct | 6 ms | 452 KB | Output is correct |
26 | Correct | 6 ms | 340 KB | Output is correct |
27 | Correct | 6 ms | 340 KB | Output is correct |
28 | Correct | 6 ms | 340 KB | Output is correct |
29 | Correct | 2 ms | 340 KB | Output is correct |
30 | Correct | 6 ms | 340 KB | Output is correct |
31 | Correct | 3 ms | 340 KB | Output is correct |
32 | Correct | 5 ms | 340 KB | Output is correct |
33 | Correct | 1060 ms | 61076 KB | Output is correct |
34 | Correct | 1220 ms | 73764 KB | Output is correct |
35 | Correct | 1202 ms | 65012 KB | Output is correct |
36 | Correct | 1193 ms | 68784 KB | Output is correct |
37 | Correct | 367 ms | 40812 KB | Output is correct |
38 | Correct | 314 ms | 40752 KB | Output is correct |
39 | Correct | 434 ms | 71028 KB | Output is correct |
40 | Correct | 429 ms | 71016 KB | Output is correct |
41 | Correct | 371 ms | 39012 KB | Output is correct |
42 | Correct | 340 ms | 51696 KB | Output is correct |
43 | Correct | 236 ms | 38648 KB | Output is correct |
44 | Correct | 394 ms | 66112 KB | Output is correct |
45 | Correct | 261 ms | 38736 KB | Output is correct |
46 | Correct | 276 ms | 38836 KB | Output is correct |
47 | Correct | 377 ms | 66452 KB | Output is correct |
48 | Correct | 327 ms | 66460 KB | Output is correct |
49 | Correct | 1326 ms | 43876 KB | Output is correct |
50 | Correct | 988 ms | 43876 KB | Output is correct |
51 | Correct | 1127 ms | 72928 KB | Output is correct |
52 | Correct | 1054 ms | 72504 KB | Output is correct |
53 | Correct | 1260 ms | 42204 KB | Output is correct |
54 | Correct | 1058 ms | 55812 KB | Output is correct |
55 | Correct | 381 ms | 39812 KB | Output is correct |
56 | Correct | 1069 ms | 67980 KB | Output is correct |
57 | Correct | 554 ms | 40512 KB | Output is correct |
58 | Correct | 732 ms | 40940 KB | Output is correct |
59 | Correct | 332 ms | 66692 KB | Output is correct |