137272025-01-08 14:38:09mateAutókódoláscpp17Futási hiba 9/501ms508 KiB
#include <bits/stdc++.h>
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 && !kikesz1){
			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;
	kisebb[mini1] = '1';
	kisebb[mini2] = '0';
	long long a = 0;
	for(int i = 0; i < s.length(); i++){
		if(kisebb[i] == '1'){
			a += (1 << (s.length()-i-1));
		}
	}
	cout << a << '\n';

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

	//cout << nagyobb;


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