1529 | 2022. 11. 22 09:54:20 | TomaSajt | Autókódolás | cpp14 | Elfogadva 50/50 | 3ms | 3900 KiB |
#include <bits/stdc++.h>
#define speed ios::sync_with_stdio(0);cin.tie(0)
using namespace std;
typedef unsigned long long ull;
int popcount(ull n) {
int res = 0;
for (int i = 0; i < 64; i++) res += (n >> i) & 1;
return res;
}
ull ne(ull n) {
ull p1 = n & -n;
ull m = n + p1 - 1; // right of the first 1 is all 1s
ull p0 = ~m & (m + 1); // position of first 0 after the first bunch of 1
ull masked = n & (p0 - 1);
int c = popcount(masked) - 1;
ull res = n - masked + p0 + (1ull << c) - 1;
return res;
}
int main() {
speed;
ull n; cin >> n;
ull pr = ~ne(~n);
if ((pr >> 63) & 1) cout << "-1";
else cout << pr;
cout << '\n' << ne(n);
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 50/50 | ||||||
1 | Elfogadva | 0/0 | 3ms | 1888 KiB | |||
2 | Elfogadva | 0/0 | 2ms | 2120 KiB | |||
3 | Elfogadva | 2/2 | 2ms | 2316 KiB | |||
4 | Elfogadva | 2/2 | 2ms | 2392 KiB | |||
5 | Elfogadva | 2/2 | 2ms | 2372 KiB | |||
6 | Elfogadva | 2/2 | 2ms | 2600 KiB | |||
7 | Elfogadva | 2/2 | 2ms | 2740 KiB | |||
8 | Elfogadva | 4/4 | 2ms | 2968 KiB | |||
9 | Elfogadva | 4/4 | 2ms | 3036 KiB | |||
10 | Elfogadva | 4/4 | 2ms | 3232 KiB | |||
11 | Elfogadva | 4/4 | 2ms | 3440 KiB | |||
12 | Elfogadva | 4/4 | 2ms | 3520 KiB | |||
13 | Elfogadva | 4/4 | 2ms | 3728 KiB | |||
14 | Elfogadva | 4/4 | 2ms | 3692 KiB | |||
15 | Elfogadva | 4/4 | 2ms | 3692 KiB | |||
16 | Elfogadva | 4/4 | 2ms | 3828 KiB | |||
17 | Elfogadva | 4/4 | 2ms | 3900 KiB |