Submission #534138


Source Code Expand

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cstring>

using namespace std;
typedef long long ll;
static const ll INF = 1000000000000000000ll;
static ll dp[61][61][61][2];

int main(){
	ios_base::sync_with_stdio(false);
	int T;
	cin >> T;
	while(T--){
		ll x;
		cin >> x;
		memset(dp, 0, sizeof(dp));
		for(int i = 0; i <= 60; ++i){
			for(int j = 0; j <= 60; ++j){
				for(int k = 0; k <= 60; ++k){
					dp[i][j][k][0] = dp[i][j][k][1] = INF;
				}
			}
		}
		dp[0][0][0][0] = 0;
		for(int i = 0; i < 60; ++i){
			for(int j = 0; j <= i; ++j){
				for(int k = 0; k <= i; ++k){
					const int d = (x >> i) & 1;
					// carry = 0, add 0
					dp[i + 1][j][k + d][0] =
						min(dp[i + 1][j][k + d][0], dp[i][j][k][0]);
					// carry = 0, add 1
					dp[i + 1][j + 1][k + (d ^ 1)][d] =
						min(dp[i + 1][j + 1][k + (d ^ 1)][d], dp[i][j][k][0] + (1ll << i));
					// carry = 1, add 0
					dp[i + 1][j][k + (d ^ 1)][d] =
						min(dp[i + 1][j][k + (d ^ 1)][d], dp[i][j][k][1]);
					// carry = 1, add 1
					dp[i + 1][j + 1][k + d][1] =
						min(dp[i + 1][j + 1][k + d][1], dp[i][j][k][1] + (1ll << i));
				}
			}
		}
		ll answer = INF;
		for(int i = 0; i <= 60; ++i){
			answer = min(answer, dp[60][i][i][0]);
		}
		cout << answer << endl;
	}
	return 0;
}

Submission Info

Submission Time
Task H - Bit Count
User logicmachine
Language C++11 (GCC 4.9.2)
Score 300
Code Size 1350 Byte
Status AC
Exec Time 249 ms
Memory 4516 KB

Judge Result

Set Name All
Score / Max Score 300 / 300
Status
AC × 9
Set Name Test Cases
All 00_sample.txt, 10_small_00.txt, 20_medium_01.txt, 20_medium_02.txt, 20_medium_03.txt, 30_large_04.txt, 30_large_05.txt, 30_large_06.txt, 80_power_of_2.txt
Case Name Status Exec Time Memory
00_sample.txt AC 42 ms 4468 KB
10_small_00.txt AC 246 ms 4512 KB
20_medium_01.txt AC 224 ms 4388 KB
20_medium_02.txt AC 239 ms 4468 KB
20_medium_03.txt AC 225 ms 4448 KB
30_large_04.txt AC 232 ms 4388 KB
30_large_05.txt AC 249 ms 4468 KB
30_large_06.txt AC 233 ms 4516 KB
80_power_of_2.txt AC 40 ms 4380 KB