Pages

Sunday 9 September 2012

UVA - 154-Recycling

import java.io.*;
import java.util.IllegalFormatException;
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;


public class Main{

    public static void main(String[] args) throws FileNotFoundException, IOException {
            TextIO.readStream(System.in);
            List<City> arr=new LinkedList<City>();
            int counter=0;
            String m=" ";
            while (true){
                 m=TextIO.getln();
                if (m.charAt(0)=='e'){
                    System.out.println(cityNum(arr));
                    arr.clear();
                    counter=0;
                    continue;
                }
                if (m.charAt(0)=='#')
                    break;
                   arr.add(new City());
                for(int i=0;i<m.length()-2;i++){
                    if(m.charAt(i)=='r'){
                       arr.get(counter).setRed(m.charAt(i+2)); 
                    }
                    else if(m.charAt(i)=='o'){
                       arr.get(counter).setOrange(m.charAt(i+2)); 
                    }
                    else if(m.charAt(i)=='y'){
                       arr.get(counter).setYellow(m.charAt(i+2)); 
                    }
                    else if(m.charAt(i)=='g'){
                       arr.get(counter).setGreen(m.charAt(i+2)); 
                    }
                    else if(m.charAt(i)=='b'){
                       arr.get(counter).setBlue(m.charAt(i+2)); 
                    }
                }
              counter++; 
            }
           
    }
    static int cityNum(List<City> arr){
        int numOfMoves[]=new int[arr.size()];
        for(int i=0;i<arr.size();i++){
            for(int j=0;j<arr.size();j++){
                if(i==j)
                    continue;
                numOfMoves[i]+=checkCityChanges(arr.get(i),arr.get(j));
            }
        }
        int min=Integer.MAX_VALUE;
        int j=0;
        for(int i=0;i<arr.size();i++){
            if(numOfMoves[i]<min){
                min=numOfMoves[i];
                j=i+1;
            }
        }
        return j;
    }
   
    static int checkCityChanges(City x,City y){
        int counter=0;
        if(x.getRed()!=y.getRed())
            counter++;
        if(x.getOrange()!=y.getOrange())
            counter++;
        if(x.getYellow()!=y.getYellow())
            counter++;
        if(x.getGreen()!=y.getGreen())
            counter++;
        if(x.getBlue()!=y.getBlue())
            counter++;
        return counter;
    }
}


class City{
    int red, orange, yellow, green, blue;   
    public void setRed(char m){
        red=getMatMean(m);
    }
   
    public void setOrange(char m){
        orange=getMatMean(m);
    }
   
    public void setYellow(char m){
        yellow=getMatMean(m);
    }
   
    public void setGreen(char m){
        green=getMatMean(m);
    }
   
    public void setBlue(char m){
        blue=getMatMean(m);
    }

    public int getBlue() {
        return blue;
    }

    public int getGreen() {
        return green;
    }

    public int getOrange() {
        return orange;
    }

    public int getRed() {
        return red;
    }

    public int getYellow() {
        return yellow;
    }
   
    public void show(){
        System.out.println("Red:"+red);
        System.out.println("Orange:"+orange);
        System.out.println("Yellow:"+yellow);
        System.out.println("Green:"+green);
        System.out.println("Blue:"+blue);
    }
   
   
    int getMatMean(char m){
        if(m=='P')
            return 1;
        if(m=='G')
            return 2;
        if(m=='A')
            return 3;
        if(m=='S')
            return 4;
        return 5;
    }
}

No comments:

Post a Comment