QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#490569#7685. Barkley IIucup-team3160#WA 44ms22308kbC++141.4kb2024-07-25 15:43:462024-07-25 15:43:51

Judging History

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

  • [2024-07-25 15:43:51]
  • 评测
  • 测评结果:WA
  • 用时:44ms
  • 内存:22308kb
  • [2024-07-25 15:43:46]
  • 提交

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] } ) ;
	}
	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 ) ;
		}
	}
	printf("%d\n" , ans) ;
}

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

詳細信息

Test #1:

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

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: 44ms
memory: 20252kb

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:

3
1
2
4
2
3
3
3
3
3
4
5
2
3
0
3
1
3
7
6
3
3
0
2
4
4
6
2
3
0
6
1
2
2
2
5
3
3
3
3
2
5
2
1
3
3
2
3
1
4
2
2
4
4
2
2
5
3
2
1
4
3
3
3
2
3
0
4
7
6
2
2
4
3
3
4
0
6
3
3
3
3
4
0
1
1
4
5
4
5
3
1
1
2
1
3
3
4
4
3
4
2
1
3
4
4
3
0
3
4
3
5
4
4
2
4
6
4
4
5
3
4
5
1
4
3
3
3
3
0
3
2
1
2
5
1
2
1
4
4
2
2
4
5
4
3
0
6
6
3
...

result:

wrong answer 1st numbers differ - expected: '6', found: '3'