Cerința
Se dă un șir cu n
elemente, numere naturale și un număr k
. Determinați numărul minim de secvențe disjuncte în care trebuie împărțit șirul astfel încât fiecare element al șirului să aparțină unei secvențe și fiecare secvență să conțină cel mult k
elemente impare.
Date de intrare
Programul citește de la tastatură numerele n k
, iar apoi cele n
elemente ale șirului
Date de ieșire
Programul va afișa pe ecran numărul minim de secvențe C
.
Restricții și precizări
1 ≤ k < n ≤ 100.000
- cele
n
numere citite vor fi mai mici decât1.000.000.000
Exemplu
Intrare
7 2 4 3 4 9 9 1 8
Ieșire
2
Explicație
O împărțire posibilă este: 4 3 4 9
și 9 1 8
.
#include <bits/stdc++.h> using namespace std; int main() { int n,k; cin >> n >> k; int a[100000]; int cnt=0; for(int i = 0 ; i < n ; ++i) { cin >> a[i]; if(a[i]%2==1) cnt++; } int d=cnt/k; if(d*k==cnt) cout << d; else cout << d+1; return 0; }