Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdlib.h>
- #include <vector>
- #include <string>
- #include <iomanip>
- using namespace std;
- struct secventa
- {
- vector <bool> secv;
- short int cod;
- };
- vector <secventa> sir;
- vector <bool> sirCodat;
- int n,dimSecv;
- void citire()
- {
- secventa aux;
- bool bit;
- cin>>n>>dimSecv;
- for(int i=1;i<=n;i++)
- {
- cin>>bit;
- aux.secv.push_back(bit);
- if (i%dimSecv==0)
- {
- sir.push_back(aux);
- aux.secv.clear();
- }
- }
- if (aux.secv.size())
- sir.push_back(aux);
- }
- short int abreviabil(vector <bool> secv)
- {
- for (int i=1;i<secv.size();i++)
- if (secv.at(i)!=secv.at(0))
- return -1;
- return secv.at(0);
- }
- void verifAbreviere()
- {
- for (int i=0;i<sir.size();i++)
- sir.at(i).cod=abreviabil(sir.at(i).secv);
- }
- bool metodaCodare()
- {
- int secv0=0,secv1=0;
- for (int i=0;i<sir.size();i++)
- switch (sir.at(i).cod)
- {
- case 0:
- secv0+=sir.at(i).secv.size()+1;
- break;
- case 1:
- secv1+=sir.at(i).secv.size()+1;
- break;
- }
- if (secv0<secv1)
- return 1;
- else
- return 0;
- }
- void codare()
- {
- bool metoda=metodaCodare();
- sirCodat.push_back(metoda);
- for (int i=0;i<sir.size()-1;i++)
- if (sir.at(i).cod==metoda)
- sirCodat.push_back(metoda);
- else
- {
- sirCodat.push_back(!metoda);
- for (int j=0;j<sir.at(i).secv.size();j++)
- sirCodat.push_back(sir.at(i).secv.at(j));
- }
- if (sir.at(sir.size()-1).secv.size()==dimSecv && sir.at(sir.size()-1).cod==metoda)
- sirCodat.push_back(metoda);
- else
- {
- sirCodat.push_back(!metoda);
- for (int j=0;j<sir.at(sir.size()-1).secv.size();j++)
- sirCodat.push_back(sir.at(sir.size()-1).secv.at(j));
- }
- }
- void afisareSirCodat()
- {
- cout<<fixed<<setprecision(2)<<(float)n/sirCodat.size()<<'\n';
- for (int i=0;i<sirCodat.size();i++)
- cout<<sirCodat.at(i)<<'\n';
- }
- int main()
- {
- system("color 1B");
- citire();
- verifAbreviere();
- codare();
- afisareSirCodat();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement