217682026-01-13 20:34:53hunzombiAutókódoláscpp17Partially correct 48/501ms552 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

ll findHigh(ll n) {
    ll c = n, c0 = 0, c1 = 0;
    while ((c & 1) == 0 && c != 0 ) {
        c0++;
        c >>= 1;
    }
    while ((c & 1) == 1) {
        c1++;
        c >>= 1;
    }
    if (c0 + c1 == 0 || c0 + c1 == 63) return -1;
    return n + (1LL << c0) + (1LL << (c1 - 1)) - 1;
}

ll findLow(ll n) {
    ll start = n;
    for (long long i=2; i <= n; i *= 2) {
        if (n & i && !(n & (i / 2))) {
            n ^= 3 * i / 2;
            break;
        }
    }
    return (n == start) ? -1 : n;
}

int main()
{
    ll n;
    cin >> n;
    cout << findLow(n) << '\n' << findHigh(n) << '\n';
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base48/50
1Accepted0/01ms508 KiB
2Accepted0/01ms316 KiB
3Accepted2/21ms512 KiB
4Accepted2/21ms316 KiB
5Partially correct1/21ms316 KiB
6Partially correct1/21ms336 KiB
7Accepted2/21ms552 KiB
8Accepted4/41ms316 KiB
9Accepted4/41ms316 KiB
10Accepted4/41ms540 KiB
11Accepted4/41ms316 KiB
12Accepted4/41ms316 KiB
13Accepted4/41ms348 KiB
14Accepted4/41ms316 KiB
15Accepted4/41ms316 KiB
16Accepted4/41ms508 KiB
17Accepted4/41ms316 KiB