寄!为何我的双指针做法样例死活过不去
查看原帖
寄!为何我的双指针做法样例死活过不去
671260
Nekomusume楼主2022/8/23 17:26
#include <iostream>
using namespace std;

int a[1000010], n, m, w = 0, flag[2010];

void put(int x)
{
    if(flag[x] == 0)w++;
    flag[x]++;
}

void del(int x)
{
    if(flag[x] == 1)w--;
    flag[x]--;
}

int main()
{
    cin >> n >> m;
    for(int i = 1; i <= n; i++)
    {
        cin >> a[i];
    }
    int ansl = 1, ansr = n;
    int r = 0;
    for(int l = 1; l <= n; del(l++))
    {
        while(w != m && r < n)
        {
            put(++r);
        }
        if(w == m)
        {
            if(r - l < ansr - ansl){ansr = r; ansl = l;}
        }else break;
    }
    cout << ansl << ' ' << ansr << endl;
    return 0;
}

已经找了114514个小时仍然没有找到的我,太菜了/kk

2022/8/23 17:26
加载中...