Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ///http://www.oia.unsam.edu.ar/_media/prob/c3a05n1p2.pdf
- #include <iostream>
- #include <vector>
- using namespace std;
- int main ()
- {
- vector <int> Vec_Cont;
- int C=0;
- char Let, Clasif_Let='G', Clasif_Let_Ant;
- cin>>Let;
- while (Let!='F')
- {
- C++;
- Clasif_Let='N';
- if ( Let=='G' )
- Clasif_Let='G';
- if ( Vec_Cont.size() )
- {
- if ( Clasif_Let==Clasif_Let_Ant ) ///cuando las clasificación actual y anterior sean iguales, aumento el ultimo contador
- Vec_Cont.back()++;
- else
- Vec_Cont.push_back(1); ///cundo sean diferentes, creo un nuevo contador (con un elemento ya encontrado)
- Clasif_Let_Ant = Clasif_Let; ///remplazo la anterior
- }
- else
- if ( Clasif_Let=='G' ) ///Para que el primer contador sea siempre de Lets 'G'
- Vec_Cont.push_back(1);
- cin >> Let; ///se ingresa la siguiente letra
- }
- int Dist=0, Max1=0, Max2=0, Pos1, Pos2;
- for(int i=0; i<Vec_Cont.size(); i+=2)
- {
- int LargSec = Vec_Cont[i];
- if (LargSec>Max1)
- {
- Max2=Max1; Pos2=Pos1;
- Max1=LargSec; Pos1=i;
- }
- else if (LargSec>Max2)
- {
- Max2=LargSec; Pos2=i;
- }
- }
- if (Pos1>Pos2)
- swap(Pos1, Pos2);///posiciones de las secuencias maximas, de menor a mayor
- for(int i=Pos1+1; i<Pos2; i++)///la distancia va a ser igual a la suma de las latas entre las posiciones
- Dist+=Vec_Cont[i];
- cout<<endl<<"Cantidad: "<<C<<endl<<"1_ Max: "<<Max1<<endl<<"2_ Max: "<<Max2<<endl<<"Dist: "<<Dist<<endl;
- return 0;
- }
Add Comment
Please, Sign In to add comment