wa#6
查看原帖
wa#6
384214
esquigybcu楼主2021/4/10 16:38

Code ==

#include <stdio.h>
#include <limits.h> 

const int MAXN = 1000000 + 5, MAXM = 2000 + 5;
int gallery[MAXN], counts[MAXM];

int main()
{
    int n, m;
    scanf("%d %d", &n, &m);
    for (int i = 0; i < n; i++)
        scanf("%d", &gallery[i]);
    
    int ans = INT_MAX, l = 0, r = 0;
    int ansl, ansr;
    for (; r < n; r++)
    {
        counts[gallery[r]]++;
        bool done = true;
        for (int i = 1; i <= m; i++)
            if (!counts[i])
            {
                done = false;
                break;
            }
        #ifndef ONLINE_JUDGE
        printf("after r = %d, counts = [%d, %d, %d, %d, %d]\n", r, counts[1], counts[2], counts[3], counts[4], counts[5]);
        #endif
        if (done)
            break;   
    }
    r++;

    for (; r < n; r++)
    {
        #ifndef ONLINE_JUDGE
        printf("r = %d, counts = [%d, %d, %d, %d, %d]\n", r, counts[1], counts[2], counts[3], counts[4], counts[5]);
        #endif
        for (; l < r; l++)
        {
            if (counts[gallery[l]] == 1)
                break;
            counts[gallery[l]]--;
        }
        #ifndef ONLINE_JUDGE
        printf("l = %d\n", l);
        #endif
        if (r - l < ans)
        {
            ans = r - l;
            ansl = l;
            ansr = r;
        }
        counts[gallery[r]]++;
    }
    printf("%d %d", ansl + 1, ansr);
    return 0;
}
2021/4/10 16:38
加载中...