#include <iostream> typedef long long int ll; using namespace std; int obliczeniewartosci(ll input) { ll power = 1; int value = 0; ll temp = input; while (temp >= power) { power *= 2; } power /= 2; while (temp > 0) { if (temp > power) { temp -= power; value++; } else if (temp < power) { power /= 2; } else if (temp == power) { value++; break; } } return value; } int main() { int ostatecznajakosc = 0; ll sekundy = 0; ll ograniczenie = 0; cin >> sekundy >> ograniczenie; ll jakosc[sekundy]; for (ll i = 0; i < sekundy; i++) { cin >> jakosc[i]; } ll wzmocnienie[sekundy]; int wartosci[sekundy]; ll jakoscsekundy[sekundy]; int sumaujemnych = 0, sumadodatnich = 0; for (int i = 0; i < sekundy; i++) { if(jakosc[i]<0) { sumaujemnych++; } else { sumadodatnich++; } } if (sumadodatnich >= sumaujemnych) { for (int i = 0; i < sekundy; i++) { wzmocnienie[sekundy-1-i] = ograniczenie-i; } } else { for (int i = 0; i < sekundy; i++) { wzmocnienie[i] = i; } } for (int i = 0; i < sekundy; i++) { ll a = wzmocnienie[i]; wartosci[i] = obliczeniewartosci(a); } for (int i = 0; i < sekundy; i++) { jakoscsekundy[i] = jakosc[i] * wartosci[i]; } for (int i = 0; i < sekundy; i++) { ostatecznajakosc += jakoscsekundy[i]; } cout << ostatecznajakosc; return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | #include <iostream> typedef long long int ll; using namespace std; int obliczeniewartosci(ll input) { ll power = 1; int value = 0; ll temp = input; while (temp >= power) { power *= 2; } power /= 2; while (temp > 0) { if (temp > power) { temp -= power; value++; } else if (temp < power) { power /= 2; } else if (temp == power) { value++; break; } } return value; } int main() { int ostatecznajakosc = 0; ll sekundy = 0; ll ograniczenie = 0; cin >> sekundy >> ograniczenie; ll jakosc[sekundy]; for (ll i = 0; i < sekundy; i++) { cin >> jakosc[i]; } ll wzmocnienie[sekundy]; int wartosci[sekundy]; ll jakoscsekundy[sekundy]; int sumaujemnych = 0, sumadodatnich = 0; for (int i = 0; i < sekundy; i++) { if(jakosc[i]<0) { sumaujemnych++; } else { sumadodatnich++; } } if (sumadodatnich >= sumaujemnych) { for (int i = 0; i < sekundy; i++) { wzmocnienie[sekundy-1-i] = ograniczenie-i; } } else { for (int i = 0; i < sekundy; i++) { wzmocnienie[i] = i; } } for (int i = 0; i < sekundy; i++) { ll a = wzmocnienie[i]; wartosci[i] = obliczeniewartosci(a); } for (int i = 0; i < sekundy; i++) { jakoscsekundy[i] = jakosc[i] * wartosci[i]; } for (int i = 0; i < sekundy; i++) { ostatecznajakosc += jakoscsekundy[i]; } cout << ostatecznajakosc; return 0; } |