#include <stdio.h>
#define NONE 'n'
/*
升序数列,删除前面的高位
降序数列,删除后面的低位
先处理升序
*/
char n[1009];
int k;
// find the next digit after digit a, return -1 when can not find.
int next(int a) {
++a;
while (n[a] == NONE){
++a;
}
if (n[a] == '\0') {
return -1;
}
return a;
}
// find avialable digit befor the digit, if do not have, find after it.
int pre(int a) {
int b = a;
--a;
while (a >= 0 && n[a] == NONE){
--a;
}
if (a < 0) {
return next(b);
}
return a;
}
int main() {
scanf("%s%d", n, &k);
int i = 0;
while (k > 0) { // 处理升序
int j = next(i);
if (j == -1) {
break;
}
if (n[i] < n[j]) { // asc ?
n[i] = NONE;
--k;
i = pre(i);
}
else {
i = j;
}
}
while (k > 0) { //如果有,处理剩余的降序
n[i] = NONE;
--k;
i = pre(i);
}
i=0;
while (n[i] != '\0') {
if (n[i] != NONE) {
putchar(n[i]);
}
++i;
}
return 0;
}
sgu 296
最新推荐文章于 2018-05-27 13:25:23 发布