În vecinătatea lui Moș Crăciun se află o fâșie liniară formată din N
zone identice de gheață. Pe această fâșie trăiesc mai mulți pinguini. Din cauza încălzirii globale zonele de gheața pe care nu se aflau pinguini s-au topit și au rămas mai multe grupuri de pinguini izolate. Moș Crăciun dorește să salveze pinguinii, dar mai întâi trebuie sa afle răspunsul la câteva întrebări.
Cerința
Cunoscând N
, numărul zonelor din fâșia liniară și fiecare tip de zonă: apa (1
), pinguin (2
) să se determine:
În vecinătatea lui Moș Crăciun se află o fâșie liniară formată din N
zone identice de gheață. Pe această fâșie trăiesc mai mulți pinguini. Din cauza încălzirii globale zonele de gheața pe care nu se aflau pinguini s-au topit și au rămas mai multe grupuri de pinguini izolate. Moș Crăciun dorește să salveze pinguinii, dar mai întâi trebuie sa afle răspunsul la câteva întrebări.
Cerința
Cunoscând N
, numărul zonelor din fâșia liniară și fiecare tip de zonă: apa (1
), pinguin (2
) să se determine:
1) Câți pinguini trebuie să salveze Moș Crăciun;
2) Câte grupuri izolate de pinguini sunt;
3) Care este numărul maxim de pinguini care se află în același grup.
Date de intrare
În fișierul pinguini.in
se află pe prima linie c
, un număr natural reprezentând cerința, pe a doua linie se află N
, un număr natural reprezentând numărul de zone din fâșia liniară și pe următoarea linie se află N
numere naturale a1
, a2
, …, aN
din mulțimea {1, 2}
cu semnificația din enunț ( 1
– apă, 2
– pinguin).
Date de ieșire
În fișierul pinguini.out
se va afla un singur număr natural K
.
Dacă cerința c = 1
, K
va reprezenta numărul de pinguini ce trebuie salvați.
Dacă cerința c = 2
, K
va reprezenta numărul de grupuri izolate de pinguini.
Dacă cerința c = 3
, K
va reprezenta numărul maxim de pinguini care se află în același grup.
Restricții și precizări
1 ≤ n, k ≤ 10 000
- Pentru prima cerință se acordă
10
puncte - Pentru a doua cerință se acordă
30
de puncte - Pentru a treia cerință se acordă
50
de puncte - În concurs s-au acordat
10
puncte din oficiu. Aici se acordă10
puncte pentru cele trei exemple.
Exemplul 1:
pinguini.in
1 12 1 2 1 2 2 2 2 1 1 2 2 2
pinguini.out
8
Explicație
c = 1
. Numărul de pinguini ce trebuie salvați este 8
.
Exemplul 2:
pinguini.in
2 12 1 2 1 2 2 2 2 1 1 2 2 2
pinguini.out
3
Explicație
c = 2
. Numărul de grupuri izolate este 3
.
Exemplul 3:
pinguini.in
3 12 1 2 1 2 2 2 2 1 1 2 2 2
pinguini.out
4
Explicație
c = 3
. Numărul maxim de pinguini dintr-un grup este 4
.
#include <bits/stdc++.h> using namespace std; ifstream cin("pinguini.in"); ofstream cout("pinguini.out"); int main() { int n , c , a[10002] , cnt = 0 , l = 0 , maxi = 0; cin >> c >> n; for(int i = 1 ; i <= n ; ++i) cin >> a[i]; a[n + 1] = 1; n++; if(c == 1) { for(int i = 1 ; i < n ; ++i) if(a[i]==2) cnt++; cout << cnt; } if(c == 2) { for(int i = 1 ; i <= n ; ++i) { if(a[i]==1 && l!=0) { cnt++; l = 0; }else if(a[i]!=1) l++; } cout << cnt; } if(c == 3) { for(int i = 1 ; i <= n ; ++i) { if(a[i] == 1) { if(l > maxi) maxi = l; l = 0; }else l++; }cout << maxi; }return 0; }