Se dă un șir de n
numere naturale. Șirul poate fi partiționat în mai multe moduri într-un număr de subșiruri strict crescătoare. De exemplu, șirul 4 6 2 5 8 1 3 7
poate fi partiționat astfel: 4 6 8
(primul subșir), 2 5 7
(al doilea) și 1 3
(al treilea). O altă modalitate este formând patru subșiruri: 4 5 7
, 6 8
, 2 3
și 1
.
Cerința
Să se determine numărul minim de subșiruri strict crescătoare în care se poate partiționa șirul.
Date de intrare
Programul citește de la tastatură numărul n
, iar apoi șirul de n
numere naturale, separate prin spații.
Date de ieșire
Programul va afișa pe ecran numărul minim de subșiruri strict crescătoare în care se poate partiționa șirul.
Restricții și precizări
1 ≤ n ≤ 1000
- cele
n
numere citite vor fi mai mici decât50.000
- Un subșir se obține dintr-un șir prin eliminarea a zero, unul, sau mai multe elemente.
Exemplu
Intrare
8 4 6 2 5 8 1 3 7
Ieșire
3
#include <bits/stdc++.h> using namespace std; int n , x , a[1001] , cnt; int main() { cin >> n; for(int i = 1 ; i <= n ; i++) { cin >> x; int ok = 0; for(int i = 1 ; i <= cnt && ok == 0; i++) if(x > a[i]) { a[i] = x; ok = 1; } if(ok == 0)a[++cnt] = x; } cout << cnt; }