Pages

Showing posts with label Map. Show all posts
Showing posts with label Map. Show all posts

Friday, 18 April 2014

CodeEval - Sudoku - Moderate

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws FileNotFoundException, IOException {

        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer();
        String line;
        while ((line = in.readLine()) != null) {
            StringTokenizer st=new StringTokenizer(line,";");
            int n=Integer.parseInt(st.nextToken());
            int arr[][]=new int[n][n];
            StringTokenizer valz=new StringTokenizer(st.nextToken(),",");
            for(int i=0;i<n;i++){
                for(int j=0;j<n;j++){
                    arr[i][j]=Integer.parseInt(valz.nextToken());
                }
            }
            if(checkSoduku(arr)){
                sb.append("True\n");
            }else{
                sb.append("False\n");
            }
        }
        System.out.print(sb);
    }
   
     static boolean checkSoduku(int[][]arr){
         int n=arr.length;
         for(int i=0;i<n;i++){
             boolean[] valz=new boolean[n+1];
             for(int j=0;j<n;j++){
                 if(arr[i][j]>n){
                     return false;
                 }
                 valz[arr[i][j]]=true;
             }
             for(int j=1;j<valz.length;j++){
                 if(!valz[j]){
                     return false;
                 }
             }
         }
         for(int i=0;i<n;i++){
             boolean[] valz=new boolean[n+1];
             for(int j=0;j<n;j++){
                 if(arr[j][i]>n){
                     return false;
                 }
                 valz[arr[j][i]]=true;
             }
             for(int j=1;j<valz.length;j++){
                 if(!valz[j]){
                     return false;
                 }
             }
         }
         int sqX=(int) Math.sqrt(n);
         for(int i=0;i<sqX*sqX;i+=sqX){
             for(int j=0;j<sqX*sqX;j+=sqX){
                 boolean[] valz=new boolean[n+1];
                 for(int z=i;z<i+sqX;z++){
                     for(int k=j;k<j+sqX;k++){
                        valz[arr[z][k]]=true;
                     }
                 }
                 for(int z=1;z<valz.length;z++){
                    if(!valz[z]){
                         return false;
                    }
                 }
             }
         }
         return true;
     }
}

Monday, 21 January 2013

UVA - 11340 - Newspaper

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
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();
        int cases=Integer.parseInt(br.readLine());
        String m="";
        for(int i=0;i<cases;i++){
            int n=Integer.parseInt(br.readLine());
            HashMap<Character,Integer> hm=new HashMap<Character, Integer>();
            for(int j=0;j<n;j++){
                StringTokenizer str=new StringTokenizer(br.readLine());
                hm.put(str.nextToken().charAt(0), Integer.parseInt(str.nextToken()));
            }
            long sum=0;
            n=Integer.parseInt(br.readLine());
            for(int j=0;j<n;j++){
                m=br.readLine();
                for(int z=0;z<m.length();z++){
                    if(hm.containsKey(m.charAt(z))){
                        sum+=hm.get(m.charAt(z));
                    }
                }
              
            }
            String temp=sum%100+"";
            if(temp.length()<2){
                temp="0"+temp;
            }
            sb.append(sum/100).append(".").append(temp).append("$\n");
        }
        System.out.print(sb);
    }
}

Wednesday, 2 January 2013

UVA - 468 - Key to Success

 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 i = 0; i < cases; i++) {
            br.readLine();
            if(i>0)
                sb.append("\n");
            m=br.readLine();
            charFreq []arr1=new charFreq[52];
            for(int j=0;j<26;j++){
                arr1[j]=new charFreq((char)('a'+j), 0);
                arr1[j+26]=new charFreq((char)('A'+j), 0);
            }
            for(int j=0;j<m.length();j++){
                if(m.charAt(j)>='a'&&m.charAt(j)<='z'){
                    arr1[m.charAt(j)-'a'].inc();
                }else if(m.charAt(j)>='A'&&m.charAt(j)<='Z'){
                    arr1[m.charAt(j)-'A'+26].inc();
                }
            }
            Arrays.sort(arr1);
            m=br.readLine();
            charFreq []arr2=new charFreq[52];
            for(int j=0;j<26;j++){
                arr2[j]=new charFreq((char)('a'+j), 0);
                arr2[j+26]=new charFreq((char)('A'+j), 0);
            }
            for(int j=0;j<m.length();j++){
                if(m.charAt(j)>='a'&&m.charAt(j)<='z'){
                    arr2[m.charAt(j)-'a'].inc();
                }else if(m.charAt(j)>='A'&&m.charAt(j)<='Z'){
                    arr2[m.charAt(j)-'A'+26].inc();
                }
            }
            Arrays.sort(arr2);
            HashMap<Integer,Integer> hm=new HashMap<Integer, Integer>();
            for(int j=arr1.length-1;j>-1;j--){
               hm.put((int)(arr2[j].getC()),(int) (arr1[j].getC()));
            }
            for(int j=0;j<m.length();j++){
                int temp=(hm.get((int)(m.charAt(j))));
                char x=(char) temp;
                sb.append(x);
            }
            sb.append("\n");
        }
        System.out.print(sb);
    }
}
   /*      
           
           
           
        }
       
    }
   
}*/
class charFreq implements Comparable<charFreq> {
    char c;
    int freq;

    public charFreq(char c, int freq) {
        this.c = c;
        this.freq = freq;
    }

    public char getC() {
        return c;
    }

    public int getFreq() {
        return freq;
    }
   
    public void inc(){
        freq++;
    }
    @Override
    public int compareTo(charFreq o) {
        if(this.freq>o.getFreq()){
            return 1;
        }
        return -1;
    }
   
}

Wednesday, 19 December 2012

UVA - 10226 - Hardwood Species

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collections;
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));
        int cases=Integer.parseInt(br.readLine());
        br.readLine();
        for(int i=0;i<cases;i++){
            if(i>0)
                System.out.println();
            HashMap<String,Integer> hm=new HashMap<String, Integer>();
            LinkedList<String> list=new LinkedList<String>();
            int counter=0;
            String temp;
            while((temp=br.readLine())!=null){
                temp=temp.trim();
                if(temp.equals("")){
                    break;
                }else{
                   if(hm.containsKey(temp)){
                       int ind=hm.get(temp);
                       hm.put(temp, ind+1);
                   }else{
                       hm.put(temp, 1);
                       list.add(temp);
                   }
                   counter++;
                }
            }
            Collections.sort(list);
            while(!list.isEmpty()){
                String str=list.remove();
                double val=(double)hm.get(str)*100/counter;
                System.out.printf("%s %.4f\n", str,val);
            }
        }
    }
}

Monday, 17 December 2012

UVA - 11629 - Ballot evaluation

//Avoid Using Double parsing
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
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("");
            StringTokenizer st=new StringTokenizer(br.readLine());
            int n=Integer.parseInt(st.nextToken());
            int m=Integer.parseInt(st.nextToken());
            HashMap<String,Integer> hm=new HashMap<String, Integer>();
            for(int i=0;i<n;i++){
                st=new StringTokenizer(br.readLine());
                hm.put(st.nextToken(), mult(st.nextToken()));
            }
            for(int i=1;i<m+1;i++){
                sb.append("Guess #").append(i).append(" was ");
                st=new StringTokenizer(br.readLine());
                int countofToken=st.countTokens();
                double ans=hm.get(st.nextToken());
                while(st.hasMoreTokens()){
                    String temp=st.nextToken();
                    if(temp.equals("+")){
                        ans+=hm.get(st.nextToken());
                    }
                    if(temp.equals("<")){
                        if(ans<10*Integer.parseInt(st.nextToken())){
                            sb.append("correct.\n");
                        }else{
                            sb.append("incorrect.\n");
                        }
                    }
                    else if(temp.equals(">")){
                        if(ans>10*Integer.parseInt(st.nextToken())){
                            sb.append("correct.\n");
                        }else{
                            sb.append("incorrect.\n");
                        }
                    }
                    else if(temp.equals(">=")){
                        if(ans>=10*Integer.parseInt(st.nextToken())){
                            sb.append("correct.\n");
                        }else{
                            sb.append("incorrect.\n");
                        }
                    }
                    else if(temp.equals("<=")){
                        if(ans<=10*Integer.parseInt(st.nextToken())){
                            sb.append("correct.\n");
                        }else{
                            sb.append("incorrect.\n");
                        }
                    }
                    else if(temp.equals("=")){
                        if(ans==10*Integer.parseInt(st.nextToken())){
                            sb.append("correct.\n");
                        }else{
                            sb.append("incorrect.\n");
                        }
                    }
                }
            }
        System.out.print(sb);
    }
   
    static int mult(String x){
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<x.length();i++){
            if(x.charAt(i)>='0' &&x.charAt(i)<='9'){
                sb.append(x.charAt(i));
            }
        }
        return Integer.parseInt(sb.toString());
    }
}

UVA - 11286 - Conformity

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashMap;
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("");
        while(true){
            int n=Integer.parseInt(br.readLine());
            if(n==0){
                break;
            }
            HashMap<String,Integer> hm=new HashMap<String, Integer>();
            int max=Integer.MIN_VALUE;
            int counterMax=0;
            for(int i=0;i<n;i++){
                StringTokenizer st=new StringTokenizer(br.readLine());
                int[] arr=new int[5];
                for(int j=0;j<5;j++){
                    arr[j]=Integer.parseInt(st.nextToken());
                }
                Arrays.sort(arr);
                StringBuilder str=new  StringBuilder("");
                for(int j=0;j<5;j++){
                    if(j>0)
                        str.append(" ");
                    str.append(arr[j]);
                }
                String temp=str.toString();
                if(hm.containsKey(temp)){
                    int index=hm.get(temp);
                    hm.put(temp, index+1);
                    if(index+1>max){
                        max=index+1;
                        counterMax=max;
                    }
                    else if(index+1==max){
                        counterMax+=max;
                    }
                }else{
                    hm.put(temp, 1);
                    if(1>max){
                        max=1;
                        counterMax=1;
                    }
                    else if(max==1){
                        counterMax++;
                    }
                }
            }
            sb.append(counterMax).append("\n");
        }
        System.out.print(sb);
    }
}

Thursday, 6 December 2012

UVA - 12504 - Updating a Dictionary

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int cases = Integer.parseInt(br.readLine());
        StringBuffer sb = new StringBuffer("");
        for (int i = 0; i < cases; i++) {
            String dic1 = br.readLine();
            String dic2 = br.readLine();
            dic1 = dic1.substring(1, dic1.length() - 1);
            dic2 = dic2.substring(1, dic2.length() - 1);
            HashMap<String, String> hm = new HashMap<String, String>();
            ArrayList<String> add = new ArrayList<String>();
            ArrayList<String> sub = new ArrayList<String>();
            ArrayList<String> change = new ArrayList<String>();
            if (!dic1.equals("") && !dic2.equals("")) {
                String[] str = dic1.split(",");
                for (int j = 0; j < str.length; j++) {
                    String[] ans = str[j].split(":");
                    hm.put(ans[0], ans[1]);
                    sub.add(ans[0]);
                }
                str = dic2.split(",");
                for (int j = 0; j < str.length; j++) {
                    String[] ans = str[j].split(":");
                    if (hm.containsKey(ans[0])) {
                        sub.remove(ans[0]);
                        String val = hm.get(ans[0]);
                        if (!val.equals(ans[1])) {
                            change.add(ans[0]);
                        }
                    } else {
                        add.add(ans[0]);
                    }
                }
            }else if(dic1.equals("")&&!dic2.equals("")){
                 String[]str = dic2.split(",");
                 for (int j = 0; j < str.length; j++) {
                    String[] ans = str[j].split(":");
                    add.add(ans[0]);
                 }
            }else if(!dic1.equals("")&&dic2.equals("")){
                 String[]str = dic1.split(",");
                 for (int j = 0; j < str.length; j++) {
                    String[] ans = str[j].split(":");
                    sub.add(ans[0]);
                 }
            }
            if(!add.isEmpty()){
                Collections.sort(add);
            }
            if(!sub.isEmpty()){
                Collections.sort(sub);
            }
            if(!change.isEmpty()){
                Collections.sort(change);
            }
            boolean first = true, enterOnce = false, entered = false;
                while (!add.isEmpty()) {
                    if (first) {
                        sb.append("+");
                        first = false;
                    } else {
                        sb.append(",");
                    }
                    sb.append(add.remove(0));
                    enterOnce = true;
                    entered = true;
                }
                if (entered) {
                    sb.append("\n");
                }
                entered = false;
                first = true;
                while (!sub.isEmpty()) {
                    if (first) {
                        sb.append("-");
                        first = false;
                    } else {
                        sb.append(",");
                    }
                    sb.append(sub.remove(0));
                    enterOnce = true;
                    entered = true;
                }
                if (entered) {
                    sb.append("\n");
                }
                first = true;
                entered = false;
                while (!change.isEmpty()) {
                    if (first) {
                        sb.append("*");
                        first = false;
                    } else {
                        sb.append(",");
                    }
                    sb.append(change.remove(0));
                    enterOnce = true;
                    entered = true;
                }
                if (entered) {
                    sb.append("\n");
                }
                if (!enterOnce) {
                    sb.append("No changes\n");
                }
                sb.append("\n");
        }
        System.out.print(sb);
    }
}

Thursday, 29 November 2012

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);
    }
}