Informatică, întrebare adresată de ionatanferariu, 8 ani în urmă

Am nevoie doar la cerința 2. ​

Anexe:

lucaciucandrei: cum ai nevoie de cerinta 2? direct snip din problema implementata full sau scrisa ca o problema separata?
ionatanferariu: Ca o problemă separată.
ionatanferariu: Nu trebuie toată problema.
ionatanferariu: Este suficient să-mi explici
ionatanferariu: Nu neapărat să rezolvi în C++

Răspunsuri la întrebare

Răspuns de lucaciucandrei
1

SOLUTIE:

#include<fstream>  

using namespace std;

int main() {

   int c, n;

   ifstream fin("cartonase.in");

   ofstream fout("cartonase.out");

   int k = 0, xx, yy, x, y, l = 1, lmax = 1;

   fin >> n;

   fin >> xx >> yy;

   for (int i = 2; i <= n; i++) {

       fin >> x >> y;

       if (yy == x) {

           l++;

           if (l > lmax)

               lmax = l;

       }

       else

           l = 1;

       xx = x;

       yy = y;

   }

   fout << lmax;

   return 0;

}

EXPLICATIE:

Avem o variabila contor, l, ce va memora numarul de cartonase. Cand ultimul capatat al cartonasului anterior (yy) este egal cu primul capat al cartonasului curent citit (x) vom aduna 1 la numarul de cartonase din secventa curenta (l - lungimea secventei deasemena), apoi comparam daca lungimea curenta/numarul de cartonase curent este mai mare decat numarul de cartonase maxim/lungimea maxima curenta, iar in caz afirmativ salvam valoarea mai mare in lmax. In cazul in care x este diferit de yy, reinitializam contorul/numarul de cartonase cu 1.


ionatanferariu: Mulțumesc!
lucaciucandrei: cu placere
Alte întrebări interesante