138012025-01-08 19:06:22mateAutókódoláscpp17Részben helyes 29/501ms500 KiB
#include <bits/stdc++.h>
#include <cstdint>
using namespace std;


int main() {
	long long n; cin >> n;
	string s;
	int cnt = 0;
	for(int i = 0; i <= log2(n); i++){
		s += to_string(n >> i & 1);
		if(s[i] == '1')	cnt++;
	}
	reverse(s.begin(),s.end());
	//cout << s << '\n';
	int mini1 = INT_MAX;
	int mini2 = INT_MAX;
	int mini3 = INT_MAX;
	int mini4 = INT_MAX;
	bool kikesz1 = 0;
	bool kikesz2 = 0;
	bool kikesz3 = 0;
	bool kikesz4 = 0;
	int cnt2 = 0;
	for(int i = s.length()-1; i >= 0; i--){
		if(s[i] - '0' == 0 && !kikesz2){
			mini1 = i;
			kikesz1 = 1;
		}
		if((mini1 < INT_MAX) && (s[i] - '0' == 1) && !kikesz2){
			mini2 = i;
			kikesz2 = 1;
		}
		if(s[i] - '0' == 1 && !kikesz3){
			mini3 = i;
			kikesz3 = 1;
		}
		if((mini3 < INT_MAX) && (s[i] - '0' == 0) && !kikesz4){
			mini4 = i;
			kikesz4 = 1;
		}
		if(kikesz4){
			cnt2++;
		}


	}
	string kisebb = s;
	long long a = 0;
	if(cnt == s.length()){
		cout << -1 << '\n';
	}else{
		kisebb[mini1] = '1';
		kisebb[mini2] = '0';
		
		for(int i = kisebb.length()-1; i >= 0; i--){
			if(kisebb[i] == '1'){
				a += (1 << (kisebb.length()-i-1));
				a = abs(a);
			}
			//cout << kisebb[i];
			//cout << a << ' ';
		}
	
	
	
		cout << a << '\n';
	}
	long long b = 0;
	string nagyobb = s;
	if(!kikesz4){
		cout << 2*n;
		exit(0);
	}

	
	nagyobb[mini4] = '1';
	for(int i = s.length()-1; i > mini4; i--){
		if(cnt-cnt2 > 0){
			nagyobb[i] = '1';
			cnt--;
		}else{
			nagyobb[i] = '0';
		}
	}
	
	for(int i = 0; i < nagyobb.length(); i++){
		if(nagyobb[i] == '1'){
			b += (1 << (s.length()-i-1));
		}
	}
	cout << b << '\n';

	//cout << nagyobb;


}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base29/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms316 KiB
3Részben helyes1/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Hibás válasz0/21ms316 KiB
6Hibás válasz0/21ms316 KiB
7Elfogadva2/21ms316 KiB
8Részben helyes2/41ms316 KiB
9Elfogadva4/41ms316 KiB
10Elfogadva4/41ms316 KiB
11Részben helyes2/41ms316 KiB
12Elfogadva4/41ms316 KiB
13Részben helyes2/41ms500 KiB
14Részben helyes2/41ms500 KiB
15Részben helyes2/41ms316 KiB
16Részben helyes2/41ms496 KiB
17Hibás válasz0/41ms316 KiB