Submission #236122


Source Code Expand

#include<cstdio>
#include<algorithm>
#include<vector>
#include<queue>
#include<set>
#include<map>
#include<string>
#include<cstring>
#include<cstdlib>
using namespace std;
typedef long long i64;
typedef vector<int> ivec;
#define MOD @
#define ADD(X,Y) ((X) = ((X) + (Y)%MOD) % MOD)

i64 A; int K;
i64 mabs(i64 v) { return max(v, -v);  }
i64 p10[16];

bool used[10] = { false };

i64 usemin(int ln)
{
	int s = 0;
	for (int i = 0; i < 10; ++i) if (used[i]){ s = i; break; }

	i64 ret = 0;
	for (int i = 0; i < ln; ++i) {
		ret *= 10;
		ret += s;
	}
	return ret;
}
i64 usemax(int ln)
{
	int s = 0;
	for (int i = 9; i >= 0; --i) if (used[i]){ s = i; break; }

	i64 ret = 0;
	for (int i = 0; i < ln; ++i) {
		ret *= 10;
		ret += s;
	}
	return ret;
}

int main()
{
	scanf("%lld%d", &A, &K);
	
	p10[0] = 1;
	for (int i = 1; i < 16; ++i) p10[i] = p10[i - 1] * 10;

	i64 ret = 1LL << 60LL;
	if (K == 1) {
		for (int i = 1; i < 10; ++i) {
			i64 val = i;
			for (;;) {
				ret = min(ret, mabs(A - val));
				if (val > A) break;
				val = val * 10 + i;
			}
		}
	}
	else {
		int len = 0;
		for (int i = 0; i < 16; ++i) if (p10[i] > A) break; else len = i;
		// pow10[len] <= A < pow10[len+1]

		int U = 0;
		for (int i = 1; i <= len + 1; ++i) {
			// corr top i chars
			int ni = (A / p10[len - i + 1]) % 10;
			if (!used[ni]) {
				//printf("%d %d\n", i, ni);
				used[ni] = true;
				++U;
			}
			if (U > K) break;

			if (i == len + 1) {
				ret = 0;
				break;
			}
			for (int j = 0; j < 10; ++j) {
				if (used[j] || U < K) {
					i64 cand1 = A / p10[len - i + 1] * p10[len - i + 1] + p10[len - i] * j + usemin(len - i);
					//printf("%lld\n", cand1);
					ret = min(ret, mabs(A - cand1));
					cand1 = A / p10[len - i + 1] * p10[len - i + 1] + p10[len - i] * j + usemax(len - i);
					//printf("%lld\n", cand1);
					ret = min(ret, mabs(A - cand1));
				}
			}
		}
	}

	printf("%lld\n", ret);

	return 0;
}

Submission Info

Submission Time
Task D - 壊れた電卓
User semiexp
Language C++11 (GCC 4.8.1)
Score 100
Code Size 2003 Byte
Status AC
Exec Time 27 ms
Memory 804 KiB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:49:25: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld%d", &A, &K);
                         ^

Judge Result

Set Name sub All
Score / Max Score 30 / 30 70 / 70
Status
AC × 32
AC × 53
Set Name Test Cases
sub test_01A.txt, test_02A.txt, test_04A.txt, test_05A.txt, test_07A.txt, test_09A.txt, test_10A.txt, test_11A.txt, test_12A.txt, test_13A.txt, test_15A.txt, test_17A.txt, test_18A.txt, test_19A.txt, test_21A.txt, test_22A.txt, test_23A.txt, test_25A.txt, test_27A.txt, test_28A.txt, test_29A.txt, test_31A.txt, test_33A.txt, test_34A.txt, test_35A.txt, test_37A.txt, test_38A.txt, test_40A.txt, test_42A.txt, test_44A.txt, test_46A.txt, test_48A.txt
All test_01A.txt, test_02A.txt, test_03.txt, test_04A.txt, test_05A.txt, test_06.txt, test_07A.txt, test_08.txt, test_09A.txt, test_10A.txt, test_11A.txt, test_12A.txt, test_13A.txt, test_14.txt, test_15A.txt, test_16.txt, test_17A.txt, test_18A.txt, test_19A.txt, test_20.txt, test_21A.txt, test_22A.txt, test_23A.txt, test_24.txt, test_25A.txt, test_26.txt, test_27A.txt, test_28A.txt, test_29A.txt, test_30.txt, test_31A.txt, test_32.txt, test_33A.txt, test_34A.txt, test_35A.txt, test_36.txt, test_37A.txt, test_38A.txt, test_39.txt, test_40A.txt, test_41.txt, test_42A.txt, test_43.txt, test_44A.txt, test_45.txt, test_46A.txt, test_47.txt, test_48A.txt, test_49.txt, sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt
Case Name Status Exec Time Memory
sample_01.txt AC 27 ms 708 KiB
sample_02.txt AC 21 ms 708 KiB
sample_03.txt AC 23 ms 804 KiB
sample_04.txt AC 23 ms 800 KiB
test_01A.txt AC 22 ms 704 KiB
test_02A.txt AC 26 ms 796 KiB
test_03.txt AC 23 ms 800 KiB
test_04A.txt AC 21 ms 792 KiB
test_05A.txt AC 21 ms 704 KiB
test_06.txt AC 23 ms 796 KiB
test_07A.txt AC 23 ms 708 KiB
test_08.txt AC 23 ms 712 KiB
test_09A.txt AC 23 ms 796 KiB
test_10A.txt AC 23 ms 796 KiB
test_11A.txt AC 23 ms 800 KiB
test_12A.txt AC 26 ms 700 KiB
test_13A.txt AC 23 ms 796 KiB
test_14.txt AC 23 ms 800 KiB
test_15A.txt AC 24 ms 800 KiB
test_16.txt AC 21 ms 792 KiB
test_17A.txt AC 22 ms 796 KiB
test_18A.txt AC 23 ms 796 KiB
test_19A.txt AC 23 ms 804 KiB
test_20.txt AC 23 ms 792 KiB
test_21A.txt AC 23 ms 796 KiB
test_22A.txt AC 23 ms 800 KiB
test_23A.txt AC 21 ms 796 KiB
test_24.txt AC 23 ms 792 KiB
test_25A.txt AC 23 ms 800 KiB
test_26.txt AC 22 ms 796 KiB
test_27A.txt AC 23 ms 800 KiB
test_28A.txt AC 23 ms 796 KiB
test_29A.txt AC 21 ms 800 KiB
test_30.txt AC 24 ms 800 KiB
test_31A.txt AC 23 ms 792 KiB
test_32.txt AC 23 ms 700 KiB
test_33A.txt AC 23 ms 804 KiB
test_34A.txt AC 23 ms 796 KiB
test_35A.txt AC 23 ms 804 KiB
test_36.txt AC 23 ms 804 KiB
test_37A.txt AC 21 ms 788 KiB
test_38A.txt AC 23 ms 708 KiB
test_39.txt AC 23 ms 800 KiB
test_40A.txt AC 22 ms 800 KiB
test_41.txt AC 21 ms 800 KiB
test_42A.txt AC 22 ms 800 KiB
test_43.txt AC 23 ms 712 KiB
test_44A.txt AC 23 ms 708 KiB
test_45.txt AC 23 ms 708 KiB
test_46A.txt AC 23 ms 796 KiB
test_47.txt AC 24 ms 800 KiB
test_48A.txt AC 22 ms 800 KiB
test_49.txt AC 23 ms 796 KiB