悬关求调
查看原帖
悬关求调
667452
Null_in_null楼主2023/12/6 21:23
#include<bits/stdc++.h>
#define int long long
using namespace std ;

string q[1000005] ;
string a[1000005] ;
map<string,int> t ;
map<string,int> t1 ;
int n , m = 0 , cnt = 0 , l = 1 , r = 1 , minn = 0x3f3f3f3f , ansl , ansr ;

signed main() {
	cin >> n ;
	for ( int i = 1 ; i <= n ; i++ ) {
		cin >> q[i] ;
	}
	cin >> n ;
	for ( int i = 1 ; i <= n ; i++ ) {
		cin >> a[i] ;
		if ( !t1[a[i]] ) {
			m++ ;
			t1[a[i]]++ ;
		}
	}
	for ( r = 1 ; r <= n ; r++ ) {
		if( !t[a[r]] ) {
			cnt++ ;
		}
		t[a[r]]++ ;
		if ( cnt < m ) {
			continue ;
		}
		while ( true ) {
			if ( t[a[l]] == 1 ) {
				break ;
			}
			t[a[l]]-- ;
			l++ ;
		}
		if ( r - l < minn ) {
			minn = r - l + 1 ;
			ansl = l ;
			ansr = r ;
		}
	}
	cout << m << endl << minn << endl ;
//	cout << ansl << ' ' << ansr ;
	return 0 ;
}
2023/12/6 21:23
加载中...