2555: 老大的烦恼

时间限制: 1 Sec  内存限制: 128 MB

提交: 176  解决: 47

题目描述

万恶的小黑,布置了一道题给老大做:给你一个n位的数,现在要求 你随意删除m位后,任意改变顺序,输出其能够构成的最小有效整数(即不能有前导零,如果只含有0则输出0)。但是,这正赶上了老大的对象从故乡来看他,老 大怎么能丢失这种机会呢。所以他找你寻求帮助,帮他完成这个问题吧。

输入

输入包含T组数据。每组数据包含两行,第一行包含两个整数n和m,代表一个数的位数和要删除的位数个数;第二行为一个n位的整数;(0<=m<n<5000)

输出

每组数据输出一行,表示删除后能够构成的最小整数

样例输入

2
5 2
54321
5 4
42130

样例输出

123
0

迷失在幽谷中的鸟儿,独自飞翔在这偌大的天地间,却不知自己该飞往何方……

#include <iostream>
#include <stdlib.h>
using namespace std;
int cmp1(const void *a,const void *b)
{
return *(char *)b-*(char *)a;
}
int cmp2(const void *a,const void *b)
{
return *(char *)a-*(char *)b;
}
int main()
{
int t,n,m,i,j,c,k,s,g;
char a[5005],b[5005];
cin>>t;
while(t--)
{
cin>>n>>m;
for(i=0; i<n; i++)
cin>>a[i];
qsort(a,n,sizeof(a[0]),cmp1);
c=0;
for(i=m; i<n; i++)
b[c++]=a[i];
qsort(b,c,sizeof(b[0]),cmp2);
k=0,s=0;
for(i=0; i<c; i++)
if(b[i]=='0')
{
k=1;
s=s+k;
}
if(s==c) cout<<"0";
else
{
for(i=0; i<c; i++)
if(b[i]!='0')
{
g=i;
break;
}
cout<<b[g];
for(j=0; j<c; j++)
{
if(j==g)continue;
cout<<b[j];
}
}
cout<<endl;
}
return 0;
}

最新文章

  1. android studio你可能忽视的细节——启动白屏?drawable和mipmap出现的意义?这里都有!!!
  2. C#开发微信门户及应用(12)-使用语音处理
  3. Java未被捕获的异常该怎么处理
  4. instanceof, isinstance,isAssignableFrom的区别
  5. jquery ajax post 中文乱码解决
  6. AutoIt3(AU3)开发的装机小工具,实现快速检测以及一些重用快捷操作功能
  7. sqlserver中对时间类型的字段转换
  8. JS魔法堂:精确判断IE的文档模式by特征嗅探
  9. ACL权限的学习
  10. Zend Studio 错误集锦[PHP]
  11. ubuntu相关软件合集(持续更新中)
  12. 聚类算法初探(六)OPTICS
  13. all about AIX MPIO
  14. P1536 村村通
  15. SpringBoot与SpringCloud的版本对应详细版
  16. ionic android升级检查
  17. .Net RPC框架Thrift的用法
  18. bootstrap面试题
  19. Matlab-9:中心差分方法解常微分算例(SOR完整版)
  20. EF数据库配置

热门文章

  1. 类函数调用与this指针
  2. 关于对象字面量花括号{} key的类型
  3. 杭电ACM省赛集训队选拔赛之热身赛-How Many Tables,并查集模板题~~
  4. 日志不得应用情况切换强制standby改变状态为primary
  5. 最长回文(hdu 3068)
  6. CodeForces 593A 2Char
  7. 一个开发的Linux使用心得总结
  8. MongoDB学习day06--高级查询aggregate聚合管道和nodejs操作aggregate
  9. mybatis结合generator进行分页插件PluginAdapter开发
  10. openwrt下载编译