Cerința
Se dă un vector cu n
elemente, numere naturale, și un număr k
. Să se stabilească dacă în vector există două secvențe de lungime k
identice.
Date de intrare
Programul citește de la tastatură numerele n
și k
, iar apoi n
numere naturale, reprezentând elementele vectorului.
Date de ieșire
Programul va afișa pe ecran numerele i j
, i < j
reprezentând pozițiile de început a două secvențe de lungime k
identice, dacă există două astfel de secvențe, sau mesajul NU
, dacă nu există două astfel de secvențe.
Dacă există mai multe perechi de secvențe identice se vor considera cele cu numerele de ordine i j
minime.
Restricții și precizări
1 ≤ n ≤ 1000
1 ≤ k ≤ 15
- cele
n
numere citite vor fi mai mici decât1000
- elementele vectorului sunt indexate de la
1
lan
Exemplu
Intrare
12 5 2 3 1 1 4 3 1 1 4 3 8 8
Ieșire
2 6
#include <bits/stdc++.h> using namespace std; int main() { int n,k; cin >> n >> k; int a[1000]; int st=0 , dr=0 , v[1000]; for(int i = 0 ; i < n ; ++i) { cin >> a[i]; } for(int i = 0 ; i <= n - k; ++i) { int p = 0; for(int j = i ; j < i+k ; ++j) { v[p]=a[j]; p++; } for(int j = i+1 ; j < n-k ; ++j) { p=0; int cnt=0; for(int m = j ; m < j+k ; ++m) { if(a[m]==v[p]) cnt++; p++; } if(cnt==k && st==0 && dr==0) st=i+1 , dr=j+1; } } if(st==0 && dr==0) cout << "NU"; else cout << st << ' ' << dr; }