Răspuns :
Cum fiecare greutate este sub 200, vei crea un vector v[200]. Știi că nu există greutatea 0, deci greutățile 1-200 se potrivesc la v[0] până la v[199], adică g-1, unde g este greutatea.
Vectorul trebuie inițializat cu 0. Vei pune declarația vectorului înafara funcției main().
În main(), vei citi n. Apoi, la fiecare greutate citită, vei crește valoarea lui v[g-1], dacă ai citit în g.
Apoi vei trece prin vector și la fiecare 3 numere nenule calculezi dacă este un 1 sau un 0 (și îl numeri). Dacă o grupare nu se completează, nu mai adaugi nimic.
Să facem efectiv:
#include <fstream>
using namespace std;
short v[200];
int main()
{
int n,a=0,b=0,c=0,d=0,g,i;
cin>>n;
for(i=0;i<n;i++)
{cin>>g;
v[g-1]++;}
for(i=0;i<200;i++)
{if(v[i]==0) continue; //sare direct la următorul i în for dacă am dat de un 0; ne interesează doar nenulele
c++;
d=d+v[i]; //adunăm numerele pozitive
if(c==3)
{c=0;
if(d%2==1)a=a+1;else b=b+1; //numărăm direct
d=0;}
}
a=a%10;b=b%10; //a sau b ar putea să fi depășit 9
cout<<10*a+b;
return 0;
}
Vectorul trebuie inițializat cu 0. Vei pune declarația vectorului înafara funcției main().
În main(), vei citi n. Apoi, la fiecare greutate citită, vei crește valoarea lui v[g-1], dacă ai citit în g.
Apoi vei trece prin vector și la fiecare 3 numere nenule calculezi dacă este un 1 sau un 0 (și îl numeri). Dacă o grupare nu se completează, nu mai adaugi nimic.
Să facem efectiv:
#include <fstream>
using namespace std;
short v[200];
int main()
{
int n,a=0,b=0,c=0,d=0,g,i;
cin>>n;
for(i=0;i<n;i++)
{cin>>g;
v[g-1]++;}
for(i=0;i<200;i++)
{if(v[i]==0) continue; //sare direct la următorul i în for dacă am dat de un 0; ne interesează doar nenulele
c++;
d=d+v[i]; //adunăm numerele pozitive
if(c==3)
{c=0;
if(d%2==1)a=a+1;else b=b+1; //numărăm direct
d=0;}
}
a=a%10;b=b%10; //a sau b ar putea să fi depășit 9
cout<<10*a+b;
return 0;
}