#9RE
查看原帖
#9RE
896850
NCUJACK楼主2024/3/2 17:43

传送门

#include <bits/stdc++.h>
#define int long long
using namespace std;
int n, m;
const int M = 10 + 1e5, N = 10 + 1e5;
map<string, int> mp;
int w[M];
int b[N];
int c[N];
int num, len = M;
int idx;
signed main()
{
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        string a;
        cin >> a;
        if (mp.find(a) == mp.end())
        {
            mp[a] = ++idx;
        }
    }
    cin >> m;
    for (int i = 1; i <= m; i++)
    {
        string a;
        cin >> a;
        if (mp.find(a) != mp.end())
        {
            w[i] = mp[a];
            b[mp[a]] = 1;
        }
    }
    int ans1 = 0;
    for (int i = 1; i <= idx; i++)
    {
        if (b[i])
            ans1++;
    }
    cout << ans1 << "\n";
    for (int i = 1, j = 0; j <= m;)
    {
        if (num < ans1)
        {
            j++;
            if (w[j])
            {
                if (!c[w[j]])
                    num++;
                c[w[j]]++;
            }
        }
        if (num == ans1)
        {
            if (!w[i])
                ;
            else
            {
                if (len > j - i + 1)
                {
                    len = j - i + 1;
                }
                if (c[w[i]] == 1)
                    num--;
                c[w[i]]--;
            }
            i++;
        }
    }
    cout << len;
    return 0;
}
2024/3/2 17:43
加载中...