Pages

Thursday 29 November 2012

UVA - 11479 - Is this the easiest problem?

#include <stdio.h>

int main()
{   long x,y,z;
    int cases,i;
    scanf("%d",&cases);
    for(i=1;i<cases+1;i++){
        scanf("%ld %ld %ld",&x,&y,&z);
        if(x>=y+z || y>=x+z || z>=x+y || x<1 ||y<1 ||z<1){
            printf("Case %d: Invalid\n",i);
        }
        else if(x==y && y==z){
            printf("Case %d: Equilateral\n",i);
        }
        else if(x==y || y==z || x==z){
            printf("Case %d: Isosceles\n",i);
        }else{
            printf("Case %d: Scalene\n",i);
        }
    }
    return 0;
}

UVA - 11677 - Alarm Clock

#include <stdio.h>

int main()
{   int h1,m1,h2,m2;
   while(1){
        scanf("%d %d %d %d",&h1,&m1,&h2,&m2);
        if(h1==0&&m1==0&&h2==0&&m2==0)
            break;
        int sum=0;
        if(m1>m2){
            m2+=60;
            h2--;
        }
        sum=m2-m1;
        if(h1>h2){
            h2+=24;
        }
        sum+=60*(h2-h1);
        printf("%d\n",sum);
    }
    return 0;
}

UVA - 11614 - Etruscan Warriors Never Play Chess

 #include <stdio.h>
#include <math.h>

int main()
{   int i,cases;
    long sum;
    scanf("%d",&cases);
    for(i=0;i<cases;i++){
        scanf("%ld",&sum);
        printf("%ld\n",(long)((-1+sqrt(1+8*sum))/2.0));
    }
    return 0;
}

UVA - 755 - 487--3279

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Stack;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        String m = "";
        HashMap<Character, Integer> charMAP = new HashMap<Character, Integer>();
        hashMapFill(charMAP);
        int cases = Integer.parseInt(br.readLine());
        for (int j = 0; j < cases; j++) {
            if (j > 0) {
                sb.append("\n");
            }
            br.readLine();
            int n = Integer.parseInt(br.readLine().trim());
            HashMap<String, Integer> hm = new HashMap<String, Integer>();
            Stack<String> list = new Stack<String>();
            for (int i = 0; i < n; i++) {
                String temp = stringMan(br.readLine(), charMAP);
                if (hm.containsKey(temp)) {
                    int ind = hm.get(temp) + 1;
                    hm.remove(temp);
                    hm.put(temp, ind);
                } else {
                    hm.put(temp, 1);
                    list.push(temp);
                }
            }
            String[] arr = new String[list.size()];
            for (int i = 0; i < arr.length; i++) {
                arr[i] = list.pop();
            }
            Arrays.sort(arr);
            boolean enter = false;
            for (int i = 0; i < arr.length; i++) {
                int number = hm.get(arr[i]);
                if (number > 1) {
                    sb.append(arr[i]).append(" ").append(number).append("\n");
                    enter = true;
                }
            }
            if (!enter) {
                sb.append("No duplicates.\n");
            }
        }
        System.out.print(sb);
    }

    static String stringMan(String x, HashMap<Character, Integer> hm) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < x.length(); i++) {
            if (x.charAt(i) != '-') {
                if ((x.charAt(i) >= 'A' && x.charAt(i) <= 'Z')
                        || (x.charAt(i) >= 'a' && x.charAt(i) <= 'z')) {
                    sb.append(hm.get(x.charAt(i)));
                } else if (x.charAt(i) >= '0' && x.charAt(i) <= '9') {
                    sb.append(x.charAt(i));
                }
            }
        }
        return sb.substring(0, 3) + "-" + sb.substring(3, sb.length());
    }

    static void hashMapFill(HashMap<Character, Integer> hm) {
        for (int i = 0, j = 1, count = 0; i < 26; i++) {
            if (count % 3 == 0) {
                j++;
            }
            if ((char) (i + 65) != 'Q' && (char) (i + 65) != 'Z') {
                char temp = (char) (i + 65);
                hm.put((char) (i + 65), j);
                hm.put((char) (i + 97), j);
                count++;
            }
        }
    }
}

Wednesday 28 November 2012

UVA - 484 - The Department of Redundancy Department

import java.io.IOException;
import java.util.LinkedList;
import java.util.Scanner;
import java.util.TreeMap;

public class Main {

    public static void main(String[] args) throws IOException {
        Scanner s=new Scanner(System.in);
        StringBuffer sb = new StringBuffer("");
        LinkedList<Long> str=new LinkedList<Long>();
        while(s.hasNext()){
            str.add(s.nextLong());
        }
        TreeMap<Long,Integer> tm=new TreeMap<Long, Integer>();
        LinkedList<Long> ls=new LinkedList<Long>();
        for(int i=0;i<str.size();i++){
            long temp=str.get(i);
            if(tm.containsKey(temp)){
                int ind=tm.get(temp)+1;
                tm.remove(temp);
                tm.put(temp, ind);
            }else{
                tm.put(temp, 1);
                ls.add(temp);
            }
        }
        for(int i=0;i<ls.size();i++){
            long number=ls.get(i);
            sb.append(number).append(" ").append(tm.get(number)).append("\n");
        }
        System.out.print(sb);
    }
}

UVA - 10374 - Election

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashMap;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        String m = "";
        int cases=Integer.parseInt(br.readLine());
        for(int j=0;j<cases;j++){
            if(j>0)
                sb.append("\n");
            br.readLine();
            HashMap<String,String> hm=new HashMap<String, String>();
            int n=Integer.parseInt(br.readLine().trim());
            int[]arr=new int[n];
            String[]str=new String[n];
            for(int i=0;i<n;i++) {
                m=br.readLine().trim();
                hm.put(m, br.readLine().trim());
                str[i]=m;
            }
            Arrays.sort(str);
            n=Integer.parseInt(br.readLine().trim());
            int max=0,indOfMax=0;
            for(int i=0;i<n;i++) {
               int ind=Arrays.binarySearch(str, br.readLine().trim());
               if(ind>-1){
               arr[ind]++;
                   if(arr[ind]>max){
                       max=arr[ind];
                       indOfMax=ind;
                   }
               }
            }
            int counter=0;
            for(int i=0;i<arr.length;i++){
                if(arr[i]==max){
                    counter++;
                }
            }
            if(counter>1){
                sb.append("tie\n");
            }else{
                sb.append(hm.get(str[indOfMax])).append("\n");
            }
        }
        System.out.print(sb);
    }
}

Tuesday 27 November 2012

UVA - 417 - Word Index

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedList;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        String m="",temp="abcdefghijklmnopqrstuvwxyz";
        HashMap<String,Integer>hm =gen(temp);
        while ((m=br.readLine())!=null) {
            m=m.trim();
            if(hm.containsKey(m)){
                sb.append(hm.get(m)).append("\n");
            }
            else{
              sb.append("0\n");
            }
        }
        System.out.print(sb);
    }
  
    static HashMap gen(String str){
        LinkedList<String> arr[]=new LinkedList[5];
        for(int i=0;i<5;i++){
            arr[i]=new LinkedList<String>();
        }
        for(int j=0;j<26;j++){
            arr[0].add(str.charAt(j)+"");
            for(int k=j+1;k<26;k++){
                arr[1].add((str.charAt(j)+"")+(str.charAt(k)+""));
                for(int l=k+1;l<26;l++){
                    arr[2].add((str.charAt(j)+"")+(str.charAt(k)+"")+(str.charAt(l)+""));
                    for(int m=l+1;m<26;m++){
                      arr[3].add((str.charAt(j)+"")+(str.charAt(k)+"")+(str.charAt(l)+"")+(str.charAt(m)+""));
                      for(int z=m+1;z<26;z++){
                         arr[4].add((str.charAt(j)+"")+(str.charAt(k)+"")+(str.charAt(l)+"")+(str.charAt(m)+"")+(str.charAt(z)+""));
                     }
                 }
               }
            }
        }
        int ind=1;
        HashMap<String,Integer> hs =new HashMap<String, Integer>();
        for(int i=0;i<5;i++){
            while(arr[i].size()>0){
                hs.put(arr[i].remove(), ind);
                ind++;
            }
        }
        return hs;
    }
}

UVA - 10282 - Babelfish


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedHashMap;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        String m="";
        LinkedHashMap<String,String>lhm =new LinkedHashMap<String, String>();
        while ((m=br.readLine())!=null) {
            if(m.trim().equals(""))
                break;
           
            String[]str=m.split(" ");
            lhm.put(str[1], str[0]);
        }
        while ((m=br.readLine())!=null) {
            m=m.trim();
            if(lhm.containsKey(m)){
                sb.append(lhm.get(m)).append("\n");
            }
            else{
                sb.append("eh\n");
            }
        }
        System.out.print(sb);
    }
}

Sunday 25 November 2012

UVA - 11470 - Square Sums


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        int ind = 1;
        while (true) {
            int n = Integer.parseInt(br.readLine());
            if (n == 0) {
                break;
            }
            int arr[][] = new int[n][n];
            for (int i = 0; i < n; i++) {
                String[] str = br.readLine().split(" ");
                for (int j = 0; j < n; j++) {
                    arr[i][j] = Integer.parseInt(str[j]);
                }
            }
            sb.append("Case ").append(ind).append(":");
            int sum[] = squareSum(arr);
            for (int i = 0; i < sum.length; i++) {
                sb.append(" ").append(sum[i]);
            }
            sb.append("\n");
            ind++;
        }
        System.out.print(sb);
    }

    static int[] squareSum(int arr[][]) {
        int n = arr.length;
        int[] temp;
        if (n % 2 == 0) {
            temp = new int[n / 2];
        } else {
            temp = new int[(n / 2) + 1];
        }
        int i = 0, j = n;
        while (i < j) {
            for (int z = i; z < j; z++) {
                temp[i] += arr[z][j - 1] + arr[z][i];
            }
            for (int z = i + 1; z < j - 1; z++) {
                temp[i] += arr[i][z]+ arr[j - 1][z];
            }
            i++;
            j--;
        }
        if(n%2==1)
            temp[temp.length-1]/=2;
        return temp;
    }
}

UVA - 10105 - Polynomial Coefficients (Java Solution)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        String m="";
        long[] fact = new long[14];
        fact[0] = 1;
        fact[1] = 1;
        for (int i = 2; i < fact.length; i++) {
            fact[i] = fact[i - 1]*i;
        }
        while((m=br.readLine())!=null) {
            String[]str=m.split(" ");
            int n=Integer.parseInt(str[0]);
            int k=Integer.parseInt(str[1]);
            str=br.readLine().split(" ");
            long temp=fact[n];
            for(int i=0;i<str.length;i++){
                int div=Integer.parseInt(str[i]);
                if(div>1)
                    temp/=fact[div];
            }
            sb.append(temp).append("\n");
        }
        System.out.print(sb);
    }
}

UVA - 10105 - Polynomial Coefficients (C solution)

#include <stdio.h>

int main()
{   int n,k,i,div;
    long fact[14];
    fact[0] = 1;
    fact[1] = 1;
    for (i = 2; i < 14; i++) {
        fact[i] = fact[i - 1]*i;
        }
    while(scanf("%d %d",&n,&k)==2){
        long temp=fact[n];
        for(i=0;i<k;i++){
            scanf("%d",&div);
            if(div>1)
                temp/=fact[div];
        }
        printf("%ld\n",temp);
    }
    return 0;
}

UVA - 10219 - Find the ways !

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        String m="";
        while((m=br.readLine())!=null) {
            String[]str=m.split(" ");
            int x=Integer.parseInt(str[0]);
            int y=Integer.parseInt(str[1]);
            sb.append(c(x,y)).append("\n");
        }
        System.out.print(sb);
    }
   
    static int c(int n, int r) {
        BigInteger ans = BigInteger.ONE;
        r = Math.min(r, n - r);
        for (int i = 1; i < r + 1; i++) {
            ans = ans.multiply(BigInteger.valueOf(n - r + i));
            ans =ans.divide(BigInteger.valueOf(i));
        }
        return (ans+"").length();
    }
   
}

Saturday 24 November 2012

UVA - 445 - Marvelous Mazes

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        String m = "";
        while((m=br.readLine())!=null){
            if(m.trim().equals("")){
               sb.append("\n");
               continue;
            }   
            int ind=0;
           for(int i=0;i<m.length();i++){
               if(m.charAt(i)>='0' && m.charAt(i)<='9'){
                   ind+=m.charAt(i)-48;
                   if(i<m.length()-1){
                       if(m.charAt(i+1)>='0' && m.charAt(i+1)<='9'){
                         continue;
                       }
                   }
                   i++;
                   if(m.charAt(i)=='b'){
                      for(int j=0;j<ind;j++){
                        sb.append(' ');
                      }
                   }else{
                       for(int j=0;j<ind;j++){
                           sb.append(m.charAt(i));
                       } 
                   }
                   ind=0;
               }
               if(m.charAt(i)=='!'){
                   sb.append("\n");
               }
           }
           sb.append("\n");
        }
        System.out.print(sb);
    }
}

UVA - 11244 - Counting Stars

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        String m = "";
        while((m=br.readLine())!=null){
           String[]str=m.split(" ");
           int x=Integer.parseInt(str[0]);
           int y=Integer.parseInt(str[1]);
           if(x==0 &&y==0)
               break;
           char[][]arr=new char[x+2][y+2];
           for(int i=0;i<x+2;i++){
               arr[i][0]='.';
           }
           for(int i=0;i<y+2;i++){
               arr[0][i]='.';
           }
           for(int i=0;i<x+2;i++){
               arr[i][y+1]='.';
           }
           for(int i=0;i<y+2;i++){
               arr[x+1][i]='.';
           }
           for(int i=1;i<x+1;i++){
               String temp=br.readLine();
               for(int j=1;j<y+1;j++){
                   arr[i][j]=temp.charAt(j-1);
               }
           }
           sb.append(stars(arr)).append("\n");
        }
        System.out.print(sb);
    }
   
    static int stars(char[][]arr){
        int counter=0;
        for(int i=1;i<arr.length-1;i++){
            for(int j=1;j<arr[0].length-1;j++){
               if(arr[i][j]=='*'){
                   if(arr[i-1][j-1]=='*'){
                       continue;
                   }
                   if(arr[i-1][j]=='*'){
                       continue;
                   }
                   if(arr[i-1][j+1]=='*'){
                       continue;
                   }
                   if(arr[i][j-1]=='*'){
                       continue;
                   }
                   if(arr[i][j+1]=='*'){
                       continue;
                   }
                   if(arr[i+1][j-1]=='*'){
                       continue;
                   }
                   if(arr[i+1][j]=='*'){
                       continue;
                   }
                   if(arr[i+1][j+1]=='*'){
                       continue;
                   }
                   counter++;
               }
            }
        }
        return counter;
    }
}

UVA - 12527 - Different Digits

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        String m = "";
        int arr[]=new int[5001];
        for(int i=1;i<5001;i++){
            arr[i]=arr[i-1];
            if(valid(i+"")){
                arr[i]++;
            }
        }
        while((m=br.readLine())!=null){
           String[]str=m.split(" ");
           int x=Integer.parseInt(str[0]);
           int y=Integer.parseInt(str[1]);
           sb.append(arr[y]-arr[x-1]).append("\n");
        }
        System.out.print(sb);
    }
  
    static boolean valid(String x){
        int[]arr =new int[10];
        for(int i=0;i<x.length();i++){
            arr[x.charAt(i)-48]++;
            if(arr[x.charAt(i)-48]>1)
                return false;
        }
        return true;
    }
}

Friday 23 November 2012

UVA - 11233 - Deli Deli

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        String[] in = br.readLine().split(" ");
        int n = Integer.parseInt(in[0]);
        String[] s = new String[n], plurals = new String[n];
        for (int i = 0; i < n; i++) {
            String[] str = br.readLine().split(" ");
            s[i] = str[0];
            plurals[i] = str[1];
        }
        Arrays.sort(s);
        Arrays.sort(plurals);
        int q = Integer.parseInt(in[1]);
        for (int i = 0; i < q; i++) {
            String temp = br.readLine();
            int ind=Arrays.binarySearch(s, temp);
            if(ind>-1){
                sb.append(plurals[ind]).append("\n");
            }else{
                sb.append(makePlural(temp)).append("\n");
            }
        }
        System.out.print(sb);
    }
    static String makePlural(String temp){
        int l=temp.length();
        if(temp.charAt(l-1)=='y'){
            if(temp.charAt(l-2)!='a' && temp.charAt(l-2)!='i'&&
                  temp.charAt(l-2)!='e' && temp.charAt(l-2)!='o'&&
                    temp.charAt(l-2)!='u'){
                return temp.substring(0,l-1)+"ies";
            }
        }
        if(temp.charAt(l-1)=='x' ||temp.charAt(l-1)=='o'||temp.charAt(l-1)=='s'){
            return temp+"es";
        }
        if(temp.charAt(l-1)=='h'&&(temp.charAt(l-2)=='c' || temp.charAt(l-2)=='s')){
                    return temp+"es";
             }
        return temp+"s";
    }
}

Thursday 22 November 2012

UVA - 10943 - How do you add?

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        String m = "";
        BigInteger arr[][] =new BigInteger[101][101];
        for(int i=1;i<101;i++){
            arr[1][i]=BigInteger.valueOf(i);
            arr[i][1]=BigInteger.ONE;
        }
        for(int i=2;i<101;i++){
            for(int j=2;j<101;j++){
                arr[i][j]=arr[i-1][j].add(arr[i][j-1]);
            }
        }
        while (true) {
            String[] str=br.readLine().split(" ");
            int i=Integer.parseInt(str[0]);
            int j=Integer.parseInt(str[1]);
            if(i==0 && j==0)
                break;
            sb.append(arr[i][j].mod(BigInteger.valueOf(1000*1000))).append("\n");
        }
        System.out.print(sb);
    }
}

UVA - 11137 - Ingenuous Cubrency

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        String m = "";
        int coins[] =new int[21];
        for(int i=1;i<22;i++){
            coins[i-1]=i*i*i;
        }
        long arr[] = count(coins, coins.length, 10000);
        while ((m = br.readLine()) != null) {
            int x=Integer.parseInt(m.trim());
            if(x==0)
                  break;
            sb.append(arr[x]).append("\n");
        }
        System.out.print(sb);
    }

    static long[] count(int coins[], int m, int n) {
        long[] temp = new long[n + 1];
        temp[0] = 1;
        for (int i = 0; i < m; i++) {
            for (int j = coins[i]; j < n+1; j++) {
                temp[j] += temp[j - coins[i]];
            }
        }
        return temp;
    }
}

UVA - 357 - Let Me Count The Ways

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        String m = "";
        int coins[] = {50,25,10,5,1};
        long arr[] = count(coins, coins.length, 30000);
        while ((m = br.readLine()) != null) {
            int x=Integer.parseInt(m);
            if(x<5)
                sb.append("There is only 1 way to produce ").append(x).append(" cents change.\n");
            else
                sb.append("There are ").append(arr[x]).append(" ways to produce ").append(x).append(" cents change.\n");
        }
        System.out.print(sb);
    }

    static long[] count(int coins[], int m, int n) {
        long[] temp = new long[n + 1];
        temp[0] = 1;
        for (int i = 0; i < m; i++) {
            for (int j = coins[i]; j < n+1; j++) {
                temp[j] += temp[j - coins[i]];
            }
        }
        return temp;
    }
}

UVA - 674 - Coin Change

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        String m = "";
        int coins[] = {50,25,10,5,1};
        long arr[] = count(coins, coins.length, 7489);
        while ((m = br.readLine()) != null) {
            int x=Integer.parseInt(m);
            sb.append(arr[x]).append("\n");
        }
        System.out.print(sb);
    }

    static long[] count(int coins[], int m, int n) {
        long[] temp = new long[n + 1];
        temp[0] = 1;
        for (int i = 0; i < m; i++) {
            for (int j = coins[i]; j < n+1; j++) {
                temp[j] += temp[j - coins[i]];
            }
        }
        return temp;
    }
}

Wednesday 21 November 2012

UVA - 147 - Dollars


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        int coins[] = {10000, 5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5};
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        String m = "";
        long arr[] = count(coins, 11, 30001);
        while ((m = br.readLine()) != null) {
            StringBuilder temp = new StringBuilder();
            for (int i = 0; i < m.length(); i++) {
                if (m.charAt(i) >= '0' && m.charAt(i) <= '9') {
                    temp.append(m.charAt(i));
                }
            }
            int x = Integer.parseInt(temp.toString());
            if (x == 0) {
                break;
            }
            for (int i = m.length(); i < 6; i++) {
                sb.append(' ');
            }
            sb.append(m);
            String ans = arr[x] + "";
            for (int i = ans.length(); i < 17; i++) {
                sb.append(' ');
            }
            sb.append(ans).append("\n");
        }
        System.out.print(sb);
    }

    static long[] count(int coins[], int m, int n) {
        long[] temp = new long[n + 1];
        temp[0] = 1;
        for (int i = 0; i < m; i++) {
            for (int j = coins[i]; j < n+1; j++) {
                temp[j] += temp[j - coins[i]];
            }
        }
        return temp;
    }
}

UVA - 490 - Rotating Sentences

#include <stdio.h>

int main() {
    int n=0, i, j;
    int max=0, length[101];
    char arr[101][101], arr2[101][101];
   while(gets(arr[n])){
        length[n] = strlen(arr[n]);
        if (length[n] > max)
            max = length[n];
        n++;
    }

    for (i = n - 1; i >-1; i--) {
        for (j = 0; j < length[i]; j++)
            arr2[j][n-i-1] = arr[i][j];
        while(j < max){
            arr2[j][n-i-1] = ' ';
            j++;
        }
    }
    for (i = 0; i < max; i++)
        puts(arr2[i]);
    return 0;
}


Tuesday 20 November 2012

UVA - 10311 - Goldbach and Euler

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.BitSet;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        BitSet notprime= sievePrime(1000 * 1000 * 100);
        String m = "";
        while ((m = br.readLine()) != null) {
            int x = Integer.parseInt(m);
            boolean status = false;
            sb.append(x);
            if(x%2==1 &&x>1){
                if(!notprime.get(x-2)){
                   sb.append(" is the sum of 2 and ").append(x-2).append(".\n");
                   status=true;
                }
            }else{
                int mid=x/2;
                for (int ind=0, i = mid; i <x ; i++,ind++) {
                    if (!notprime.get(mid-ind) && !notprime.get(i) && (mid-ind)!=i) {
                        sb.append(" is the sum of ");
                        sb.append(x-i).append(" and ").append(i).append(".\n");
                        status = true;
                        break;
                    }
                }
            }
            if (!status) {
                sb.append(" is not the sum of two primes!\n");
            }
        }
        System.out.print(sb);
    }

    static BitSet sievePrime(int x) {
        BitSet notprime = new BitSet(x + 1);
        notprime.set(0);
        notprime.set(1);
        for (int i = 2; i * i < x + 1; i++) {
            if (!notprime.get(i)) {
                for (int j = i; i * j < x + 1; j++) {
                    notprime.set(i * j);
                }
            }
        }
       return notprime;
    }
}

Monday 19 November 2012

UVA - 11192 - Group Reverse

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException {
       BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
       StringBuilder sb = new StringBuilder();
       while(true){
           StringTokenizer st=new StringTokenizer(br.readLine());
           int n=Integer.parseInt(st.nextToken());
           if(n==0){
               break;
           }
           String temp=st.nextToken();
           int length=temp.length()/n;
           StringBuilder str=new StringBuilder();
           for(int i=0,j=0;i<temp.length();i++){
               str.append(temp.charAt(i));
               if(j%length==length-1){
                   j=0;
                   sb.append(str.reverse());
                   str=new StringBuilder();
               }else{
                   j++;
               }
           }
           sb.append("\n");
       }
       System.out.print(sb);
    }
  
}

UVA - 10905 - Children's Game

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.Arrays;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        while (true) {
            int n = Integer.parseInt(br.readLine());
            if (n == 0) {
                break;
            }
            Name[] arr = new Name[n];
            String[] str = br.readLine().split(" ");
            for (int i = 0; i < n; i++) {
                arr[i] = new Name(str[i]);
            }
            Arrays.sort(arr);
            for (int i = arr.length - 1; i > -1; i--) {
                sb.append(arr[i].getX());
            }
            sb.append("\n");
        }
        System.out.print(sb);
    }
}

class Name implements Comparable<Name> {

    String x;

    public String getX() {
        return x;
    }

    public Name(String x) {
        this.x = x;
    }

    @Override
    public int compareTo(Name o) {
        BigInteger bg1=new BigInteger(x+o.getX());
        BigInteger bg2=new BigInteger(o.getX()+x);
        return bg1.compareTo(bg2);
    }
}

Sunday 18 November 2012

UVA - 12149 - Feynman

#include <stdio.h>

int main () {
    int x,i,temp;
    int arr[101];
    arr[0]=0;
    for(i=1,temp=1;i<101;i++,temp=i*i){
        arr[i]=arr[i-1]+temp;
    }
    while(1){
        scanf("%d", &x);
        if(x==0)
            break;
        printf("%d\n",arr[x]);
    }
    return 0;
}

UVA - 12502 - Three Families

#include <stdio.h>

int main () {
    int x,y,z,n,i;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d %d %d", &x,&y,&z);
        printf("%d\n",z*(2*x-y)/(x+y));
    }
    return 0;
}

UVA - 11787 - Numeral Hieroglyphs

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        int cases=Integer.parseInt(br.readLine());
        for(int i=0;i<cases;i++){
            String m=br.readLine();
            int[]arr=new int[7];
            boolean inc=false;
            boolean dec=false;
            boolean sucess=true;
            int last=indFind(m.charAt(0));
            for(int j=0;j<m.length();j++){
                int temp=indFind(m.charAt(j));
                if(temp>-1){
                    arr[temp]++;
                    if(arr[temp]>9){
                        sucess=false;
                        break;
                    }
                }
                if(temp>last){
                    inc=true;
                }else if(temp<last){
                   dec=true;
                }
                if(inc && dec){
                    sucess=false;
                    break;
                }
                last=temp;
            }
            if(sucess){
                boolean flag=false;
                for(int j=6;j>-1;j--){
                    if(arr[j]>0 ||flag){
                        sb.append(arr[j]);
                        flag=true;
                    }
                }
                sb.append("\n");
            }else{
                sb.append("error\n");
            }
        }
        System.out.print(sb);
    }
  
    static int indFind(char x){
        if(x=='B')
            return 0;
        if(x=='U')
            return 1;
        if(x=='S')
            return 2;
        if(x=='P')
            return 3;
        if(x=='F')
            return 4;
        if(x=='T')
            return 5;
        if(x=='M')
            return 6;
        else
            return -1;
    }
}

UVA - 789 - Indexing

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        StringBuilder temp = new StringBuilder("");
        String m = "";
        char c = (char) br.read();
        br.readLine();
        HashSet<String> hs = new HashSet<String>();
        LinkedList<StrInd> list=new LinkedList<StrInd>();
        int counter=1;
        while ((m = br.readLine()) != null) {
            StringTokenizer st=new StringTokenizer(m);
            int n=st.countTokens();
            for(int i=0;i<n;i++){
                String strID=st.nextToken();
                StringBuilder tempS=new StringBuilder();
                for (int j = 0; j < strID.length(); j++) {
                        if (strID.charAt(j) >= 'A' && strID.charAt(j) <= 'Z') {
                            tempS.append(strID.charAt(j));
                        }
                }
                if(tempS.charAt(0)==c){
                    if(!hs.contains(tempS.toString())){
                        hs.add(tempS.toString());
                        list.add(new StrInd(tempS.toString(),counter));
                    }else{
                        for(int j=0;j<list.size();j++){
                            if(list.get(j).temp.equals(tempS.toString())){
                                list.get(j).insert(counter);
                            }
                        }
                    }
                }
            }
            counter++;
        }
        StrInd []arr=new StrInd[list.size()];
        for(int i=0;i<list.size();i++){
            arr[i]=list.get(i);
        }
        Arrays.sort(arr);
        for(int i=0;i<arr.length;i++){
            sb.append(arr[i].temp);
            sb.append(arr[i].getInd());
        }
        System.out.print(sb);
    }
}
class StrInd implements Comparable<StrInd> {
    public String temp;
    LinkedList<Integer> index;

    public StrInd(String temp,int x) {
        this.temp = temp;
        index=new LinkedList<Integer>();
        index.add(x);
    }
  
    public void insert(int i){
        if(!index.contains(i))
             index.add(i);
    }
  
    public String getInd(){
        StringBuilder sb=new StringBuilder("");
        for(int i=0;i<index.size();i++){
            sb.append(" ").append(index.get(i));
        }
        sb.append("\n");
        return sb.toString();
    }

    @Override
    public int compareTo(StrInd x) {
        return this.temp.compareTo(x.temp);
    }
}

UVA - 11988 - Broken Keyboard (a.k.a. Beiju Text)

#include <stdio.h>
#include <list>
#include <string.h>

using namespace std;

int main () {
        char x[100*1000+1];
        while (scanf("%s", x) != EOF) {
            list<char> carlist;
            list<char>::iterator it=carlist.begin();
            int n=strlen(x);
            for(int i=0;i<n;i++) {
                if (x[i] == '[')
                    it = carlist.begin();
                else if (x[i] == ']')
                    it = carlist.end();
                else
                    carlist.insert(it, x[i]);
            }
            for (it = carlist.begin(); it != carlist.end(); it++){
                printf("%c", *it);
                }
            printf("\n");
        }

       return 0;
    }

Saturday 17 November 2012

UVA - 11933 - Splitting Numbers

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        while (true) {
            int x = Integer.parseInt(br.readLine());
            if (x == 0) {
                break;
            }
            String intial = Integer.toBinaryString(x);
            StringBuilder str1 = new StringBuilder(""), str2 = new StringBuilder("");
            boolean flag = true;
            int counter = 0;
            for (int i = 0; i < intial.length(); i++) {
                if (flag) {
                    str1.append(intial.charAt(i));
                    str2.append('0');
                } else {
                    str2.append(intial.charAt(i));
                    str1.append('0');
                }
                if (intial.charAt(i) == '1') {
                    if (flag) {
                        flag = false;
                    } else {
                        flag = true;
                    }
                    counter++;
                }
            }
            if (counter % 2 == 0) {
                sb.append(Integer.parseInt(str2.toString(), 2)).append(' ').append(Integer.parseInt(str1.toString(), 2)).append('\n');
            } else {
                sb.append(Integer.parseInt(str1.toString(), 2)).append(' ').append(Integer.parseInt(str2.toString(), 2)).append('\n');
            }
        }
        System.out.print(sb);
    }
}

UVA - 10260 - Soundex

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        String m = "";
        while ((m = br.readLine()) != null) {
            int last=-1;
            for(int i=0;i<m.length();i++){
                    int temp=matching(m.charAt(i));
                    if(temp>0 &&temp!=last) {
                        sb.append(temp);
                    }
                    last=temp;
            }
            sb.append("\n");
        }
        System.out.print(sb);
    }

    static int matching(char x) {
        if (x == 'B' || x == 'F' || x == 'P' || x == 'V') {
            return 1;
        }
        if (x == 'C' || x == 'G' || x == 'J' || x == 'K'
                || x == 'Q' || x == 'S' || x == 'X' || x == 'Z') {
            return 2;
        }
        if (x == 'D' || x == 'T') {
            return 3;
        }
        if (x == 'L') {
            return 4;
        }
        if (x == 'M' || x == 'N') {
            return 5;
        }
        if (x == 'R') {
            return 6;
        }
        return 0;
    }
}