You are given a ternary string (it is a string which consists only of characters ‘0’, ‘1’ and ‘2’).

You can swap any two adjacent (consecutive) characters ‘0’ and ‘1’ (i.e. replace “01” with “10” or vice versa) or any two adjacent (consecutive) characters ‘1’ and ‘2’ (i.e. replace “12” with “21” or vice versa).

For example, for string “010210” we can perform the following moves:

“010210” →→ “100210”;
“010210” →→ “001210”;
“010210” →→ “010120”;
“010210” →→ “010201”.
Note than you cannot swap “02” →→ “20” and vice versa. You cannot perform any other operations with the given string excluding described above.

You task is to obtain the minimum possible (lexicographically) string by using these swaps arbitrary number of times (possibly, zero).

String aa is lexicographically less than string bb (if strings aa and bb have the same length) if there exists some position ii (1≤i≤|a|1≤i≤|a|, where |s||s| is the length of the string ss) such that for every j<ij<i holds aj=bjaj=bj, and ai<biai<bi.

Input
The first line of the input contains the string ss consisting only of characters ‘0’, ‘1’ and ‘2’, its length is between 11 and 105105 (inclusive).

Output
Print a single string — the minimum possible (lexicographically) string you can obtain by using the swaps described above arbitrary number of times (possibly, zero).

Examples
Input
100210
Output
001120
Input
11222121
Output
11112222
Input
20
Output
20
思路:很不错的一道题目。1可以和0交换,也可以和2交换。那么1就要尽可能的往前。0和2不能交换,那么第一个2后面的那些0和2的相对位置是不会变的,因为1我们要让它尽可能的往前,这样才是最优的。因此我们将第一个2前面的0放置在最前面,后面排上所有的1,剩下的0和2相对位置就不变了。
代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<stack>
#include<map>
#include<algorithm>
#define inf 0x3f3f3f3f
using namespace std;
const int maxn=1e5+10;
typedef long long ll;
char s[maxn],str[maxn];
int main()
{scanf("%s",&s);int n = strlen(s);int sum = 0; // 第一个2 前边0 的个数 int sum1 = 0;  // 1 的个数int k = 0,flag = 0;for(int i=0;i<n;i++){if(s[i]=='0' && flag==0)sum++;else if(s[i]=='0' && flag==1)str[k++] = s[i];else if(s[i]=='1')sum1++;else if(s[i]=='2'){flag = 1;str[k++] = s[i];}}for(int i=0;i<sum;i++)printf("0");for(int i=0;i<sum1;i++)printf("1");printf("%s\n",str);return 0;
}

努力加油a啊,(o)/~

Minimum Ternary String CodeForces - 1009B(思维)相关推荐

  1. 牛客网暑期ACM多校训练营(第三场): A. Ternary String(欧拉降幂+递推)

    题目描述 A ternary string is a sequence of digits, where each digit is either 0, 1, or 2. Chiaki has a t ...

  2. B. Ternary String

    B. Ternary String B.三元字符串 time limit per test: 2 seconds time limit per test: 2 seconds memory limit ...

  3. String类常用方法思维导图总结

    String类常用方法思维导图总结 给自己加油,保持每天都学习,更新博客!信Java得永生!

  4. CSL分苹果 小埋与扫雷 Doors Breaking and Repairing Key Set Balanced Ternary String

    第一题CSL分苹果 思路:基础动态规划,设m为所有苹果的数量和,dp[x]为,容量为x时候能分的最多苹果数目,那么wavator分到的最多苹果数目就是dp[m/2],tokitsukaze分到的苹果数 ...

  5. UCF HSPT 2021 A . Minimum Excluded String (mex)

    A . Minimum Excluded String [ 问题 7945 ] [ 讨论 ] 描述 我们将最小排除 (mex) 字符串定义为不包含在给定字符串中的最小字符串.如果一个字符串的长度更短, ...

  6. String[]转化暴露“思维误区”

    那天写code,用到这个,强转,将页面传来的值转换为数组,结果是,当页面传来的只有一个值时,它是无法转换为数组的,只能获得1个string,只有length>1时才会转化为数组的形式,报的错误是 ...

  7. Balanced Ternary String

    https://codeforces.com/contest/1102/problem/D 题解: /* *@Author: STZG *@Language: C++ */ #include < ...

  8. D. Mahmoud and Ehab and the binary string Codeforces Round #435 (Div. 2)

    http://codeforces.com/contest/862/problem/D 交互题 fflush(stdout) 调试: 先行给出结果,函数代替输入 1 #include <cstd ...

  9. Generate a String CodeForces - 710E(dp)

    zscoder wants to generate an input file for some programming competition problem. His input is a str ...

最新文章

  1. JavaScript的Generator理解使用
  2. linux 下DHCP的安装
  3. Smartforms 设置纸张打印格式
  4. 一步一步写算法(之寻找丢失的数)
  5. 登錄CentOS出現-bash-4.1#
  6. Android系统root破解原理分析
  7. 机器学习速成课程 | 练习 | Google Development——编程练习:TensorFlow 编程概念
  8. Tomcat源码中ObjectName这个类的作用
  9. Android Studio代码自动提示无效
  10. Java商店管理系统
  11. IA-32 Intel®架构软件开发人员手册卷3:系统编程指南(中文版-部分)
  12. AMOS分析技术:模型的群组分析;AMOS如何对同一个模型分别用男性数据和女性数据拟合?
  13. JSP SSH公车拍卖系统myeclipse开发mysql数据库bs框架java编程网结构详细设计
  14. y2第一章 初始mybatis的上机3_MyBatis第一章
  15. 解读| 支付宝催泪视频背后的反欺诈升级战
  16. html5微杂志源码,H5制作又一利器:分分钟制作一个H5页面
  17. 分享一个Python画樱花树的代码
  18. 联想微型计算机620S,小巧、精致!联想ideacenter 620s远不止如此
  19. 大话手游苹果系统多少个服务器,《大话西游》手游iOS系统官服开服公告!
  20. iOS 好心态带来好人生

热门文章

  1. IOS流水布局UICollectionView使用FlowLayout进行自由灵活组合
  2. thetae_1在MATLAB中的意思,无刷直流电机在Matlab中的建模与仿真研究_荣军
  3. ⅰcp经济模型_干货!来自清华小哥哥的全家桶教程——手把手教你在本地构建 Nervos AppChain...
  4. max导出fbx设置_真3D虚拟偶像制作教程——虚拟偶像人物模型导出前的处理
  5. c++11中thread join和detach的区别
  6. android阿里滑块验证码,在Android App中接入HTML5滑块验证
  7. python协程处理海量文件_python_实战篇_使用协程gevent模块实现多任务copyA文件夹到B文件夹...
  8. 让线程等待10秒_把python程序变成多线程
  9. linux搜索关键字并定位,Linux系统中文件定位与查找(示例代码)
  10. oracle rowID切片,Oracle中的rowid