Thursday, 23 January 2014

UVa Problem ID 10194 (Football)

/*Note:-
!!! The default system encoding is different from the judge data files. !!!

For the detail, please reference this thread:
http://acm.uva.es/board/viewtopic.php?f=10&t=32047&start=30#p140856
 
*/

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

public class Main {
	public static void main(String[] args) throws IOException 
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in,"ISO-8859-1"));
        OutputStreamWriter cout = new OutputStreamWriter(System.out, "ISO-8859-1");
        StringBuffer sb=new StringBuffer("");
        int N=Integer.parseInt(br.readLine());
        if(N<=0 || N>1000)
        	System.exit(0);
        for (int k1 = 0; k1 0)
        		sb.append("\n");
        	String tournamentname=br.readLine();
        	if(tournamentname.length()<0 || tournamentname.length()>100)
        		break;
        	sb.append(tournamentname+"\n");
        	int T=Integer.parseInt(br.readLine());
        	if(T<=1 || T>30)
        		break;
        	
        	Team teams[]=new Team[T];
        	for (int i = 0; i 30)
        			System.exit(0);
        		for (int j = 0; j < s.length(); j++) {
					if(s.charAt(j)<32 || s.charAt(j)=='#' || s.charAt(j)=='@')
						System.exit(0);
				}
        		Team t=new Team(s);
        		teams[i]=t;
			}
        	int G=Integer.parseInt(br.readLine());
        	if(G<0 || G>1000)
        		break;
        	for (int i = 0; i =20 || goal2<0 ||goal2 >=20)
					break;
        		for (int j = 0; j < teams.length; j++) {
					if(teams[j].name.equals(s[0]))
					{
						if(goal1>goal2)
							teams[j].win++;
						else if(goal1==goal2)
							teams[j].tie++;
						else
							teams[j].losses++;
						teams[j].goalscored+=goal1;
						teams[j].goalagainst+=goal2;
					}
					if(teams[j].name.equals(s[2]))
					{
						if(goal2>goal1)
							teams[j].win++;
						else if(goal1==goal2)
							teams[j].tie++;
						else
							teams[j].losses++;
						teams[j].goalscored+=goal2;
						teams[j].goalagainst+=goal1;
					}
				}
        		
			}
        	
        	Arrays.sort(teams,new Team());
        	for (int j = 0; j < teams.length; j++) {
				sb.append((j+1)+") "+teams[j].name+" "+(teams[j].win*3+teams[j].tie*1)+"p, "+(teams[j].win+teams[j].tie+teams[j].losses)+"g ("+teams[j].win+"-"+teams[j].tie+"-"+teams[j].losses+"), "+(teams[j].goalscored-teams[j].goalagainst)+"gd ("+teams[j].goalscored+"-"+teams[j].goalagainst+")");
				sb.append("\n");
			}
        }
        cout.write(sb.toString());
        cout.flush();
    }
}
class Team implements Comparator
{
	String name;
	int win;
	int tie;
	int losses;
	int goalscored;
	int goalagainst;
	
	public Team(String s)
	{
		name=s;
	}
	public Team()
	{

	}
	
	@Override
	public int compare(Team A, Team B) {
		// TODO Auto-generated method stub
		if((A.win*3+A.tie*1)>(B.win*3+B.tie*1))
			return -1;
		else if((A.win*3+A.tie*1)<(B.win*3+B.tie*1))
			return +1;
		else
		{
			if(A.win>B.win)
				return -1;
			else if(A.win(B.goalscored-B.goalagainst))
					return -1;
				else if((A.goalscored-A.goalagainst)<(B.goalscored-B.goalagainst))
					return +1;
				else
				{
					if(A.goalscored>B.goalscored)
						return -1;
					else if(A.goalscored(B.win+B.tie+B.losses))
							return +1;
						else
							return A.name.compareToIgnoreCase(B.name);

					}
				}
			}
		}
	}
}

Previous Post
Next Post

0 comments:

Advertisement