QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#490597#7685. Barkley IIucup-team3160#WA 43ms20300kbC++141.5kb2024-07-25 15:48:432024-07-25 15:48:43

Judging History

你现在查看的是最新测评结果

  • [2024-07-25 15:48:43]
  • 评测
  • 测评结果:WA
  • 用时:43ms
  • 内存:20300kb
  • [2024-07-25 15:48:43]
  • 提交

answer

# include <bits/stdc++.h>

using namespace std ;

typedef pair< int , int > pii ;
int n , m ;
int a[500005] ;
int nxt[500005] ;
int pos[500005] ;
vector < pii > qe[500005] ;
bool cmp( pair< pii , int > a , pair< pii , int > b )
{
	return a.first.second < b.first.second ;
}
int lowbit( int x  )
{
	return x & -x ;
}
int s[500005] ;
void add( int x , int v )
{
	for ( int i = x ; i <= n ; i += lowbit( i ) ) s[i] += v ;
}
void add( int l , int r , int v )
{
	add( l , v ) , add( r + 1 , -v ) ;
}
int query( int x )
{
	int res = 0 ;
	for ( int i = x ; i >= 1 ; i -= lowbit( i ) ) res += s[i] ;
	return res ;
}
void solve()
{
	scanf("%d%d" , &n , &m) ;
	for ( int i = 1 ; i <= n ; i++ ) qe[i].clear() , s[i] = 0 ;
	for ( int i = 1 ; i <= n ; i++ ) scanf("%d" , a + i) ;
	for ( int i = 1 ; i <= n + 1 ; i++ ) pos[a[i]] = 0 , pos[i] = 0 ;
	for ( int i = 1 ; i <= n ; i++ )
	{
		nxt[i] = pos[a[i]] ;
		pos[a[i]] = i ;
		if ( nxt[i] < i - 1 ) qe[i - 1].push_back( { nxt[i] + 1 , a[i] } ) ;
	}
	int nc = 0 ;
	for ( int i = 1 ; i <= m + 1 ; i++ )
		if ( ! pos[i] ) 
		{
			nc = i ;
			break ;
		}
	for ( int i = 1 ; i <= n ; i++ )
		if ( i == pos[a[i]] ) qe[n].push_back( { i + 1 , a[i] } ) ;
	int ans = 0 ;
	for ( int i = 1 ; i <= n ; i++ )
	{
		add( nxt[i] + 1 , i , 1 ) ;
		for ( auto t : qe[i] ) 
		{
			ans = max( ans , query( t.first ) - t.second ) ;
		}
	}
	ans = max( ans , query( 1 ) - nc ) ;
	printf("%d\n" , ans) ;
}

int main()
{
	int t ;
	scanf("%d" , &t) ;
	while ( t -- ) solve() ;
	return 0 ;
}

詳細信息

Test #1:

score: 100
Accepted
time: 2ms
memory: 20300kb

input:

2
5 4
1 2 2 3 4
5 10000
5 2 3 4 1

output:

2
3

result:

ok 2 number(s): "2 3"

Test #2:

score: 0
Accepted
time: 40ms
memory: 20260kb

input:

50000
10 19
12 6 1 12 11 15 4 1 13 18
10 8
8 7 6 7 6 2 2 3 4 8
10 6
3 2 6 6 5 2 3 4 5 6
10 11
6 3 7 9 2 1 2 10 10 4
10 6
6 1 2 6 1 1 3 4 2 1
10 9
8 5 3 9 1 7 5 5 1 1
10 5
1 4 3 2 5 4 5 3 5 2
10 14
3 8 12 10 4 2 3 13 7 3
10 14
5 5 12 2 8 1 13 9 8 5
10 7
5 5 6 6 1 5 3 7 3 4
10 7
5 1 4 6 1 6 4 3 7 5
10...

output:

6
5
4
4
2
4
3
7
4
4
4
5
2
3
6
6
7
5
7
6
5
5
6
2
6
8
7
2
5
5
6
2
2
3
4
5
3
3
7
3
2
5
6
1
3
5
3
3
3
8
6
6
5
7
4
4
5
4
6
6
6
3
7
3
6
3
3
7
7
6
6
7
4
3
3
4
4
6
3
4
6
6
4
5
5
9
4
5
7
5
3
5
2
2
5
6
6
8
4
3
4
5
5
5
7
7
3
2
6
5
3
5
4
4
5
6
6
5
6
7
7
4
5
7
4
7
3
7
6
6
6
5
4
2
5
4
2
3
6
5
2
6
5
5
4
3
5
6
6
6
...

result:

ok 50000 numbers

Test #3:

score: -100
Wrong Answer
time: 43ms
memory: 20264kb

input:

100000
5 4
4 3 1 3 1
5 4
2 2 1 3 4
5 9
7 8 7 1 3
5 3
3 2 2 3 1
5 7
1 4 2 4 7
5 4
4 4 4 2 3
5 3
2 1 2 2 2
5 5
2 1 2 5 4
5 9
1 8 4 4 7
5 6
2 6 4 6 2
5 5
1 2 4 4 4
5 3
2 1 1 1 3
5 5
5 4 5 2 5
5 4
3 3 3 2 1
5 3
3 1 3 2 3
5 7
1 5 2 2 7
5 6
2 2 6 5 6
5 10
6 3 3 1 7
5 8
1 6 8 4 3
5 4
1 2 1 3 3
5 7
2 2 4 3 ...

output:

1
1
2
1
2
2
0
2
2
2
1
0
2
1
1
2
2
2
3
0
3
1
2
2
3
3
1
3
0
0
3
2
2
0
2
2
1
0
2
2
3
3
3
1
3
2
2
3
2
3
2
1
2
3
1
3
3
1
2
3
1
1
2
2
2
2
1
1
1
1
0
2
1
3
0
2
2
3
2
2
1
3
1
3
1
1
1
3
1
1
4
1
1
3
2
2
2
0
3
2
4
3
3
2
1
0
4
4
3
2
1
2
1
2
3
2
3
4
4
3
0
0
1
4
1
3
3
2
3
1
3
4
3
1
2
2
3
2
3
2
3
3
1
3
1
1
4
1
1
3
...

result:

wrong answer 67th numbers differ - expected: '0', found: '1'