| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Why TLE?
is some input??
i paste and cut te same test case 30 times and my program is fast, but if is some input i think my first while still true is because that??
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
//BufferedReader in = new BufferedReader(new FileReader("in.txt"));
StringBuffer s= new StringBuffer ();
StringTokenizer st,st2;
String caso;
inicio:
while(true)
{
boolean seleccion[]=new boolean[101];
String jugador[]= new String[101];
String posicion[]= new String[101];
int tiempo[]= new int[101];
for(int i=1;i<=22;i++)
{
caso=in.readLine().trim();
if(caso.startsWith("0"))
break inicio;
st= new StringTokenizer(caso);
while(st.hasMoreTokens())
{
int id=new Integer(st.nextToken());
seleccion[id]=true;
jugador[id]=st.nextToken();
posicion[id]=st.nextToken();
while(st.hasMoreTokens())
{
st2= new StringTokenizer(st.nextToken(),"-");
int inicio= new Integer(st2.nextToken());
int fin=new Integer(st2.nextToken());
tiempo[id]+=fin-inicio;
}
}
}
st2= new StringTokenizer(in.readLine(),"-");
int defensores=new Integer(st2.nextToken());
int mediocampistas=new Integer(st2.nextToken());
int delanteros=new Integer(st2.nextToken());
int arquero=1;
int df=defensores;
int m=mediocampistas;
int dl=delanteros;
int a=arquero;
String equipo[]= new String[11];
Arrays.fill(equipo,"-1");
boolean states[]= new boolean[11];
int i=0;
while(true){
if((arquero+defensores+mediocampistas+delanteros)==0)
break;
for(int j=1;j<101;j++)
if(seleccion[j]){
if(arquero>0 && posicion[j].equals("G")){
equipo[i]=String.valueOf(j)+" "+jugador[j]+" "+posicion[j];
states[i]=true;
arquero--;
i++;
}else
if(defensores>0 && posicion[j].equals("D")){
equipo[i]=String.valueOf(j)+" "+jugador[j]+" "+posicion[j];
defensores--;
states[i]=true;
i++;
}else
if(mediocampistas>0 && posicion[j].equals("M")){
equipo[i]=String.valueOf(j)+" "+jugador[j]+" "+posicion[j];
mediocampistas--;
states[i]=true;
i++;
}
else
if(delanteros>0 && posicion[j].equals("S")){
equipo[i]=String.valueOf(j)+" "+jugador[j]+" "+posicion[j];
delanteros--;
states[i]=true;
i++;
}
seleccion[j]=false;
break;
}
}
int max=Integer.MIN_VALUE;
int pos=Integer.MIN_VALUE;
for(i=0;i<11;i++)
if(equipo[i].equals("-1"))
break;
if(i==11){
for(i=0;i<11;i++)
{
st= new StringTokenizer(equipo[i]);
int t= new Integer(st.nextToken());
st.nextToken();
String posi=st.nextToken();
if(max<=tiempo[t]){
max=tiempo[t];
if(!posi.equals("G") && pos<t)
pos=t;
}
}
s.append(equipo[pos-1]+"\n");
states[pos-1]=false;
for(i=0;i<a;i++)
for(int j=0;j<11;j++)
if(states[j])
if(equipo[j].charAt(equipo[j].length()-1)=='G'){
s.append(equipo[j]+"\n");
states[j]=false;
}
for(i=0;i<df;i++)
for(int j=0;j<11;j++)
if(states[j])
if(equipo[j].charAt(equipo[j].length()-1)=='D'){
s.append(equipo[j]+"\n");
states[j]=false;
}
for(i=0;i<m;i++)
for(int j=0;j<11;j++)
if(states[j])
if(equipo[j].charAt(equipo[j].length()-1)=='M'){
s.append(equipo[j]+"\n");
states[j]=false;
}
for(i=0;i<dl;i++)
for(int j=0;j<11;j++)
if(states[j])
if(equipo[j].charAt(equipo[j].length()-1)=='S'){
s.append(equipo[j]+"\n");
states[j]=false;
}
}else
s.append("IMPOSSIBLE TO ARRANGE\n" );
s.append("\n");
}
System.out.println(s);
}
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator