Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import java.math.*;
- import java.util.*;
- import java.awt.geom.*;
- import static java.lang.Math.*;
- public class Solution implements Runnable {
- public static void main(String[] args) throws Exception {
- new Thread(null, new Solution(), "", 1 << 25).start();
- }
- BufferedReader in;
- PrintWriter out;
- StringTokenizer st;
- final String fname = "";
- private String next() throws Exception {
- if (st == null || !st.hasMoreElements())
- st = new StringTokenizer(in.readLine());
- return st.nextToken();
- }
- private int nextInt() throws Exception {
- return Integer.parseInt(next());
- }
- private long nextLong() throws Exception {
- return Long.parseLong(next());
- }
- private double nextDouble() throws Exception {
- return Double.parseDouble(next());
- }
- public void run() {
- try {
- //in = new BufferedReader(new FileReader(fname+".in"));
- //out = new PrintWriter(new FileWriter(fname+".out"));
- in = new BufferedReader(new InputStreamReader(System.in));
- out = new PrintWriter(new OutputStreamWriter(System.out));
- solve();
- } catch (Exception ex) {
- throw new RuntimeException(ex);
- } finally {
- out.close();
- }
- }
- String s[]=new String [4000];
- int memo[]=new int[127];
- String ans="";
- void check(int nums[]) {
- int cnt[]=new int[127];
- int md=1;
- String t = "";
- for (int i=0;i<nums.length;i++) {
- nums[i]=nums[i]*md;
- md*=10;
- }
- for (int i=nums.length-1;i>=0;i--) {
- if (nums[i]==0) continue;
- t+=s[nums[i]];
- for (int j=0;j<s[nums[i]].length();j++) {
- cnt[s[nums[i]].charAt(j)]++;
- if (cnt[s[nums[i]].charAt(j)]>memo[s[nums[i]].charAt(j)]) return;
- }
- }
- if (t.length()>ans.length())
- ans=t;
- }
- public void solve() throws Exception {
- s[1]="I";
- s[2]="II";
- s[3]="III";
- s[4]="IV";
- s[5]="V";
- s[6]="VI";
- s[7]="VII";
- s[8]="VIII";
- s[9]="IX";
- s[10]="X";
- s[20]="XX";
- s[30]="XXX";
- s[40]="XL";
- s[50]="L";
- s[60]="LX";
- s[70]="LXX";
- s[80]="LXXX";
- s[90]="XC";
- s[100]="C";
- s[200]="CC";
- s[300]="CCC";
- s[400]="CD";
- s[500]="D";
- s[600]="DC";
- s[700]="DCC";
- s[800]="DCCC";
- s[900]="CM";
- s[1000]="M";
- s[2000]="MM";
- s[3000]="MMM";
- String t = in.readLine();
- for (int i=0;i<t.length();i++) {
- if (t.charAt(i)>='a' && t.charAt(i)<='z') {
- memo[Character.toUpperCase(t.charAt(i))]++;
- }
- if (t.charAt(i)>='A' && t.charAt(i)<='Z')
- memo[t.charAt(i)]++;
- }
- for (int num=3999;num>=1;num--) {
- int tmp=num;
- int nums[]=new int [4];
- int it=0;
- while (tmp>0) {
- nums[it++]=tmp%10;
- tmp/=10;
- }
- check(nums);
- }
- out.println(ans);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement