Cod sursa(job #2119995)

Utilizator CozehNita Horia Teodor Cozeh Data 1 februarie 2018 20:20:20
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#define nmax 100010
using namespace std;

ifstream fin("maxk.in");
ofstream fout("maxk.out");

int v[nmax*10];
int v2[nmax];
int minim = nmax*10;

int main(){
    int n,k,i,nr,counter=0;
    fin>>n>>k;
    for(i = 1; i <= n; i++){
        fin>>nr;
        v[i] = nr;
        v2[v[i]]++;
        if(v2[v[i]] == k+1) counter++;
    }
    if(counter == 0){
        fout<<counter;
        return 0;
    }
    else{
        int j = 1;
        for(i = 1; i <= n; i++){
            while(counter && j<=n){
                v2[v[j]]--;
                if(v2[v[j]] == k) counter--;
                j++;
            }
            if(counter == 0){
                minim = min(minim,j-i);
            }
            v2[v[i]]++;
            if(v2[v[i]] == k+1) counter++;
        }
    }
    fout<<minim;
}