#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; } |
English