Please sign in first.
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 |
|
|
| 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 |