제출 #1368553

#제출 시각아이디문제언어결과실행 시간메모리
1368553hahahaGift Boxes (EGOI25_giftboxes)C++20
100 / 100
86 ms12284 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back
const int N=5e5+7;
int n,t;
vector<int>a;
vector<int> temp;
int cnt[N];
int dub;
int f[N];
signed main(){
    cin>>t>>n;
    int mx=0;
    for(int i=0; i<n; i++){
        int x;
        cin>>x;
        a.pb(x);
        if (cnt[x]==1)dub++;
        cnt[x]++;
    }
    int l=0;
    int r=0;
    int ans=N, ansl, ansr;
    int gstdif=0;
    int stpr=-1;
    while (gstdif<dub&&r<n) {
        f[a[r]]++;
        if (f[a[r]]==cnt[a[r]]-1 && cnt[a[r]]>1) gstdif++;
        if (f[a[r]]>1&& stpr==-1) stpr=r;
        r++;
    }
    if (stpr==-1)stpr=r;
    r--;
    if(ans>r-l+1) {
        ans=r-l+1;
        ansl=l;
        ansr=r;
    };

    while (l<stpr) {
        l++;
        f[a[l-1]]--;
        while(f[a[l-1]]<cnt[a[l-1]]-1&&r<n-1){
            r++;
            f[a[r]]++;
        }
        if(ans>r-l+1) {
            ans=r-l+1;
            ansl=l;
            ansr=r;
        }
    }
    cout<<ansl<<" "<<ansr<<endl;

}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…