AlenAntonelli

Caos en la envasadora de Latas

Sep 8th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.70 KB | None | 0 0
  1. ///http://www.oia.unsam.edu.ar/_media/prob/c3a05n1p2.pdf
  2. #include <iostream>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. int main ()
  7. {
  8.     vector <int> Vec_Cont;
  9.     int C=0;
  10.     char Let, Clasif_Let='G', Clasif_Let_Ant;
  11.  
  12.     cin>>Let;
  13.     while (Let!='F')
  14.     {
  15.         C++;
  16.  
  17.         Clasif_Let='N';
  18.         if ( Let=='G' )
  19.             Clasif_Let='G';
  20.  
  21.         if ( Vec_Cont.size() )
  22.         {
  23.             if ( Clasif_Let==Clasif_Let_Ant ) ///cuando las clasificación actual y anterior sean iguales, aumento el ultimo contador
  24.                 Vec_Cont.back()++;
  25.             else
  26.                 Vec_Cont.push_back(1); ///cundo sean diferentes, creo un nuevo contador (con un elemento ya encontrado)
  27.  
  28.             Clasif_Let_Ant = Clasif_Let; ///remplazo la anterior
  29.         }
  30.         else
  31.             if ( Clasif_Let=='G' ) ///Para que el primer contador sea siempre de Lets 'G'
  32.                 Vec_Cont.push_back(1);
  33.  
  34.         cin >> Let; ///se ingresa la siguiente letra
  35.     }
  36.  
  37.     int Dist=0, Max1=0, Max2=0, Pos1, Pos2;
  38.  
  39.     for(int i=0; i<Vec_Cont.size(); i+=2)
  40.     {
  41.         int LargSec = Vec_Cont[i];
  42.  
  43.         if (LargSec>Max1)
  44.         {
  45.             Max2=Max1; Pos2=Pos1;
  46.             Max1=LargSec; Pos1=i;
  47.         }
  48.         else if (LargSec>Max2)
  49.         {
  50.             Max2=LargSec; Pos2=i;
  51.         }
  52.     }
  53.  
  54.     if (Pos1>Pos2)
  55.         swap(Pos1, Pos2);///posiciones de las secuencias maximas, de menor a mayor
  56.  
  57.     for(int i=Pos1+1; i<Pos2; i++)///la distancia va a ser igual a la suma de las latas entre las posiciones
  58.         Dist+=Vec_Cont[i];
  59.  
  60.     cout<<endl<<"Cantidad: "<<C<<endl<<"1_ Max: "<<Max1<<endl<<"2_ Max: "<<Max2<<endl<<"Dist: "<<Dist<<endl;
  61.  
  62.     return 0;
  63. }
Add Comment
Please, Sign In to add comment