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;
}
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Nu ezitați să ne contactați pentru orice întrebare sau dacă aveți nevoie de asistență suplimentară. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!