90分tle求调!
  • 板块P1638 逛画展
  • 楼主vscdr_
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/7/20 10:36
  • 上次更新2025/7/20 17:13:50
查看原帖
90分tle求调!
1395986
vscdr_楼主2025/7/20 10:36
#include <bits/stdc++.h>

using namespace std;
constexpr int N = 1e6 + 7;
int a[N], n, m;
bool flag;
int main()
{
    cin >> n >> m;
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i];
    }
    if (n == m)
        cout << "1 " << n;
    int l = INT_MAX, r, minn = INT_MAX;
    for (int i = 1, j; i <= n; i++)
    {
        bool vis[2007] = {0};
        j = i;
        int cnt = 0, tot = 0;
        while (j <= n && cnt < m)
        {
            tot++;
            if (tot > minn)
                break;
            if (vis[a[j]])
            {
                j++;
                continue;
            }
            vis[a[j]] = 1;
            cnt++;
            j++;
        }
        // cout << i << ' ' << j << endl;
        if (cnt == m)
        {
            if (tot == m && !flag)
            {
                l = i, r = j - 1;
                break;
            }
            if (tot < minn)
            {
                minn = tot;
                l = i, r = j - 1;
            }
            else if (tot == minn)
            {
                if (i < l)
                {
                    l = i, r = j - 1;
                }
            }
        }
    }
    cout << l << ' ' << r;
    return 0;
}
2025/7/20 10:36
加载中...