Răspuns :
Răspuns:
#include <fstream>
using namespace std;
ifstream fin("pinguini.in");
ofstream fout("pinguini.out");
int n, a[10001], i,lg,lgmax,nrp,nrg,c;
int main()
{
fin>>c>>n;
for(i=1;i<=n;i++)
{
fin>>a[i];
if(a[i]==2)nrp++;
}
if(a[1]==1)nrg=0;
else nrg=1;
for(i=2;i<=n;i++)
if(a[i]==2&&a[i-1]==1)nrg++;
lg=lgmax=0;
for(i=1;i<=n;i++)
if(a[i]==2)lg++;
else
{
if(lg>lgmax)lgmax=lg;
lg=0;
}
if(lg>lgmax)lgmax=lg;
if(c==1)fout<<nrp<<endl;
if(c==2)fout<<nrg<<endl;
if(c==3)fout<<lgmax<<endl;
return 0;
}
Indicatie:
Pentru cerința 1) vom determina încă din citire numărul de pinguini (câte elemente sunt egale cu 2).
Pentru cerința 2) determinam câte dintre elementele egale cu 2 sunt precedate de valoarea 1, excepție face primul element care trebuie tratat separat.
Pentru cerința 3) determinam lungimea secvenței maxime de elemente egale cu 2.
Uite si solutia mea cu cateva comentarii, poate te ajuta mai mult. Daca nu intelegi ceva, astept intrebari ;)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("pinguini.in");
ofstream fout ("pinguini.out");
int main()
{
int C, N, V[10001], nrp = 0, nrg = 0, nrpmx = 0, lgmx = 0;
fin >> C; // Citim cerinta
fin >> N;
for (int i = 1; i <= N; i ++)
fin >> V[i]; // citim apa sau pingunii (ne spune in enunt ca daca avem 1 este apa, iar daca avem 2 este pinguin)
// La prima cerinta ne cere numarul de pinguni, prin urmare, numaram cifrele 2.
for (int i = 1; i <= N; i ++)
if (V[i] == 2)
nrp ++; // Aici avem cerinta 1
// La cerinta 2 ne cere nuamrul de grupuri izolate (doua grupuri sunt izolate daca sunt inconjurate de apa, prin uramre)
if (V[1] == 1)
nrg = 0;
else
nrg = 1;
for (int i = 1; i <= N; i ++)
if (V[i] == 1 && V[i+1] == 2)
nrg ++; // Cerinta 2
// La cerinta 3 ne cere numarul de pinguni maximi dintr un grup (adica cea mai lunga secventa de cifre 2)
for (int i = 1; i <= N; i ++){
if (V[i] == 2 && V[i+1] == 2){
nrpmx ++;
if (nrpmx > lgmx)
lgmx = nrpmx;
}
else{
V[i] = V[i+1];
nrpmx = 1;
}
}
//Afisam rezultatele
if (C == 1)
fout << nrp;
if (C == 2)
fout << nrg;
if (C == 3)
fout << lgmx;
return 0;
}