1796 2022. 12. 03 18:30:04 kdb Autókódolás cpp11 Elfogadva 50/50 3ms 4288 KiB
#include <iostream>
#include <bitset>
#include <cmath>
#define ll long long
using namespace std;
int main()
{
    cin.tie(nullptr);
    cout.tie(nullptr);
    ios_base::sync_with_stdio(false);
    ll n;
    cin >> n;
    string s = bitset<40>(n).to_string();
    for (int a = 0; a < s.size() / 2; a++) swap(s[a], s[s.size() - a - 1]);
    string k = s, m = s;
    int i = 0;
    while (s[i] == '1') i++;
    int j = i + 1;
    while (j < s.size() && s[j] == '0') j++;
    if (j < s.size())
    {
        k[j] = '0';
        for (size_t a = 0; a < j; a++)
        {
            if (a >= j - i - 1) k[a] = '1';
            else k[a] = '0';
        }
        for (int a = 0; a < k.size() / 2; a++) swap(k[a], k[k.size() - a - 1]);
        cout << bitset<40>(k).to_ullong() << endl;
    }
    else cout << -1 << endl;

    i = 0;
    while (s[i] == '0') i++;
    j = i + 1;
    while (j < s.size() && s[j] == '1') j++;
    if (j < s.size())
    {
        m[j] = '1';
        for (size_t a = 0; a < j; a++)
        {
            if (a < j - i - 1) m[a] = '1';
            else m[a] = '0';
        }
        for (int a = 0; a < m.size() / 2; a++) swap(m[a], m[m.size() - a - 1]);
        cout << bitset<40>(m).to_ullong() << endl;
    }
    else cout << -1 << endl;

    return 0;
}
/*
46
-45
-51


*/
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 3ms 1828 KiB
2 Elfogadva 0/0 2ms 2024 KiB
3 Elfogadva 2/2 2ms 2224 KiB
4 Elfogadva 2/2 2ms 2432 KiB
5 Elfogadva 2/2 2ms 2508 KiB
6 Elfogadva 2/2 2ms 2904 KiB
7 Elfogadva 2/2 2ms 2904 KiB
8 Elfogadva 4/4 2ms 3104 KiB
9 Elfogadva 4/4 2ms 3188 KiB
10 Elfogadva 4/4 2ms 3312 KiB
11 Elfogadva 4/4 2ms 3548 KiB
12 Elfogadva 4/4 2ms 3720 KiB
13 Elfogadva 4/4 2ms 3800 KiB
14 Elfogadva 4/4 2ms 4016 KiB
15 Elfogadva 4/4 2ms 4092 KiB
16 Elfogadva 4/4 2ms 4164 KiB
17 Elfogadva 4/4 2ms 4288 KiB