QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#490588#7685. Barkley IIucup-team3160#WA 39ms22316kbC++141.5kb2024-07-25 15:46:492024-07-25 15:46:49

Judging History

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

  • [2024-07-25 15:46:49]
  • 评测
  • 测评结果:WA
  • 用时:39ms
  • 内存:22316kb
  • [2024-07-25 15:46:49]
  • 提交

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 ; i++ ) pos[a[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 ;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 22316kb

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: -100
Wrong Answer
time: 39ms
memory: 20248kb

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
1
5
8
5
6
5
3
3
6
6
5
5
5
0
7
1
7
9
6
6
3
7
4
7
9
6
5
6
6
8
4
6
5
5
7
3
5
8
5
6
8
7
5
7
7
5
5
5
10
7
7
7
8
6
5
8
7
7
1
7
3
8
5
7
5
4
4
9
8
7
8
6
5
7
7
5
8
5
6
7
7
7
6
1
1
6
7
8
7
7
6
4
4
6
7
7
9
7
5
7
6
6
7
8
9
6
3
8
4
5
8
6
7
2
7
8
8
8
9
8
7
7
8
6
8
6
8
7
7
7
6
5
5
7
5
5
4
8
7
5
7
8
7
7
6
0
8
6
7...

result:

wrong answer 2nd numbers differ - expected: '5', found: '1'