QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#85503 | #5173. 染色 | crashed | 0 | 8ms | 3432kb | C++14 | 2.0kb | 2023-03-07 20:15:23 | 2023-03-07 20:15:26 |
Judging History
answer
#include <cstdio>
#include <algorithm>
#define rep( i, a, b ) for( int i = (a) ; i <= (b) ; i ++ )
#define per( i, a, b ) for( int i = (a) ; i >= (b) ; i -- )
const int MAXN = 1e6 + 5;
template<typename _T>
inline void Read( _T &x ) {
x = 0; char s = getchar(); bool f = false;
while( ! ( '0' <= s && s <= '9' ) ) { f = s == '-', s = getchar(); }
while( '0' <= s && s <= '9' ) { x = ( x << 3 ) + ( x << 1 ) + ( s - '0' ), s = getchar(); }
if( f ) x = -x;
}
template<typename _T>
inline void Write( _T x ) {
if( x < 0 ) putchar( '-' ), x = -x;
if( 9 < x ) Write( x / 10 );
putchar( x % 10 + '0' );
}
int qL[MAXN], qR[MAXN];
int ans[MAXN];
int lef[MAXN], rig[MAXN];
int tot = 0;
int pos[MAXN];
int stk[MAXN], top = 0;
int col[MAXN];
int N, Q;
/*
inline void Work() {
top = tot = 0;
rep( i, 1, N ) stk[i] = pos[i] = 0;
rep( i, 1, N )
if( pos[col[i]] ) {
tot ++, lef[tot] = pos[col[i]], rig[tot] = i;
while( top ) pos[stk[top --]] = 0;
} else pos[stk[++ top] = col[i]] = i;
rep( i, 1, Q ) {
int l = qL[i], r = qR[i];
if( l > r ) continue;
ans[i] = 2 * ( r - l );
int p1 = std :: lower_bound( lef + 1, lef + 1 + tot, l ) - lef,
p2 = std :: upper_bound( rig + 1, rig + 1 + tot, r ) - rig - 1;
if( p1 <= p2 ) ans[i] -= p2 - p1 + 1;
}
}
*/
inline void Work() {
rep( i, 1, Q ) {
int l = qL[i], r = qR[i];
if( l > r ) continue;
ans[i] = 2 * ( r - l );
rep( j, l, r )
if( pos[col[j]] ) {
ans[i] --;
while( top ) pos[stk[top --]] = 0;
} else pos[stk[++ top] = col[j]] = j;
while( top ) pos[stk[top --]] = 0;
}
}
int main() {
// freopen( ".in", "r", stdin );
// freopen( ".out", "w", stdout );
Read( N ), Read( Q );
rep( i, 1, N ) Read( col[i] );
rep( i, 1, Q ) Read( qL[i] ), Read( qR[i] );
Work();
std :: reverse( col + 1, col + 1 + N );
rep( i, 1, Q ) qL[i] = N - qL[i] + 1, qR[i] = N - qR[i] + 1;
Work();
rep( i, 1, Q ) Write( ans[i] ), putchar( '\n' );
return 0;
}
详细
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 0
Wrong Answer
time: 2ms
memory: 3420kb
input:
10000 100 84 85 52 2 78 53 20 21 23 76 37 44 18 5 37 8 81 65 46 58 69 1 69 37 53 46 37 35 35 89 1 77 35 6 46 59 89 46 25 55 50 38 61 67 44 23 29 24 46 4 42 15 34 77 20 34 83 79 12 50 69 26 38 14 9 66 80 72 22 26 9 68 35 38 19 84 92 30 83 62 100 71 81 60 7 37 64 50 33 60 86 75 45 78 32 53 3 48 87 60 ...
output:
3673 4594 5997 8409 730 7033 184 7346 495 1146 254 2260 13275 6279 457 7540 2168 10522 1799 2687 4821 294 6023 629 6678 6199 11452 2722 3172 7862 17849 512 5511 17904 9598 6168 5008 14633 671 466 15672 12715 8903 7860 11024 6624 6418 5040 9134 8559 2184 10334 2704 12583 4982 2153 8839 1913 6499 2844...
result:
wrong answer 1st words differ - expected: '3668', found: '3673'
Subtask #2:
score: 0
Time Limit Exceeded
Test #7:
score: 0
Time Limit Exceeded
input:
100000 100000 3 2 3 3 3 3 2 3 2 1 3 1 1 1 3 2 1 3 1 2 2 1 3 1 2 2 1 1 1 3 2 1 3 3 3 3 1 1 1 2 3 3 2 1 1 1 3 1 3 1 3 2 1 3 2 3 3 2 3 3 2 3 3 3 3 3 2 3 2 3 1 3 3 3 3 3 3 3 1 2 3 3 1 3 1 1 2 2 3 1 1 2 3 2 3 1 3 2 1 3 2 3 2 1 1 3 3 1 3 1 2 2 2 3 2 3 2 3 2 1 1 3 1 3 2 2 3 3 3 1 2 2 3 3 2 1 3 1 2 2 2 3 2 ...
output:
result:
Subtask #3:
score: 0
Wrong Answer
Test #15:
score: 0
Wrong Answer
time: 8ms
memory: 3432kb
input:
5000 5000 256 63 197 36 75 66 33 72 27 75 66 248 29 166 209 252 141 95 84 226 147 249 116 94 192 256 199 273 182 166 116 274 27 211 154 144 283 23 53 110 215 11 164 284 161 221 251 96 43 47 18 115 12 51 156 61 116 209 93 98 47 165 174 106 83 67 184 75 12 290 183 197 112 240 67 56 215 148 104 5 141 2...
output:
1323 2699 1746 2615 4765 5002 2954 1327 881 5081 7820 4865 936 926 809 7279 7671 5332 3816 3229 4483 1579 2542 40 901 301 4355 3887 3818 5744 4616 1660 438 1416 3628 5262 565 119 2046 7623 9121 2049 3126 3688 2886 420 727 4011 180 3234 1444 1604 7135 3011 5962 8091 1539 3812 363 4481 3303 1742 819 2...
result:
wrong answer 1st words differ - expected: '1322', found: '1323'
Subtask #4:
score: 0
Time Limit Exceeded
Test #23:
score: 0
Time Limit Exceeded
input:
1000000 1000000 1105 3246 1880 3554 818 2331 2576 4140 149 4562 3498 3536 3400 4788 4363 4742 1216 4218 4032 1701 1489 4889 1761 3022 3145 4945 3067 4304 5016 4624 1612 13 1335 3613 1086 2210 386 3464 1156 3352 4341 5006 3465 3900 622 654 1826 2983 1250 4164 3335 4308 2995 1982 1347 4335 2535 5054 4...