sgu 296
来源:互联网 发布:淘宝提示账号存在风险 编辑:程序博客网 时间:2024/05/16 06:28
#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;}