E aí galera.
É o seguinte, fiz esse código para o problema A da maratona:
import java.io.*;
public class dice {
static int proxjog=0;
static int array[];
static int winner=-1;
static int jpode[];
static int j[];
static int p=0,s=0,n=0;
public static void verifica(int soma)
{
if (jpode[proxjog]==0)
{
joga(soma);
}
else
{
jpode[proxjog]=0;
passa(soma);
joga(soma);
}
}
public static void joga(int soma)
{
if (j[proxjog]+soma>s-1)
{
/*if (winner==-1)*/
winner=proxjog+1;
}
else
{
j[proxjog]+=soma;
if (array[j[proxjog]]==-1)
jpode[proxjog]=1;
}
passa(soma);
}
public static void passa(int soma)
{
if (proxjog==p-1)
proxjog=0;
else proxjog=proxjog+1;
}
public static void main(String[] args) throws IOException{
String ent="",aux="";
int soma=0;
while (!ent.equals("0 0"))
{
winner=-1;
proxjog=0;
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) );
ent=br.readLine();
if (!ent.equals("0 0"))
{
p=Integer.parseInt(ent.substring(0,ent.indexOf(' ')));
s=Integer.parseInt(ent.substring(ent.indexOf(' ')+1,ent.length()));
array=new int[s];
jpode=new int[p];
j=new int[p];
for (int q=0;q<p;q++)
j[q]=-1;
aux=br.readLine()+" ";
int auxi=0;
for (int z=0;z<aux.length();z++)
{
if (aux.charAt(z)==' ')
{
array[Integer.parseInt(aux.substring(auxi,z))-1]=-1;
auxi=z+1;
}//if
}//for
aux=br.readLine();
n=Integer.parseInt(aux);
for (int z=0;z<n;z++)
{
aux=br.readLine();
soma=Integer.parseInt(aux.substring(0,aux.indexOf(' ')))+Integer.parseInt(aux.substring(aux.indexOf(' ')+1,aux.length()));
verifica(soma);
}//for
System.out.println(winner);
}//if
}//while
}//main
}//class
Aí hoje eu fui ver o resultado da maratona e meu problema estava errado (nós submetemos esse código faltando 8 minutos para acabar a maratona). Eu achei um erro que eu coloquei em comentário no código acima, que eu tinha que colocar no método joga():
/if (winner==-1)/
Alguém sabe o que está errado neste código ??? É só colocar essa linha aí, para ele pode parar de mudar o winner ou tem mais algum erro???