TOPIC
PROBLEM 1062 - URI Fórum 1.0
This topic was solved and cannot recieve new replies.
-
ttogores replied 9 years ago
Por que o toolkit devolve No como resposta para o seguinte caso de teste?
8 3 4 7 8 5 6 1 2 0 0
[list:2iveawbe]
- Os vagões 1 e 2 entram e saem da estação. Estação: Vazia; Trilho B: 1 2
- Os vagões 3 e 4 entram na estação. Estação: 4 3; Trilho B: 1 2
- Os vagões 5 e 6 entram na estação. Estação: 6 5 4 3; Trilho B: 1 2
- Os vagões 5 e 6 saem da estação. Estação: 4 3; Trilho B: 5 6 1 2
- Os vagões 7 e 8 entram na estação. Estação: 8 7 4 3; Trilho B: 5 6 1 2
- Os vagões 7 e 8 saem da estação. Estação: 4 3; Trilho B: 7 8 5 6 1 2
- Os vagões 3 e 4 saem da estação. Estação: Vazia; Trilho B: 3 4 7 8 5 6 1 2 [/list:u:2iveawbe]
-
oman10 replied 9 years ago
Olá, já faz dias que estou tentando resolver este problema. Agora criei uma solução e acho que estou quase lá. Submeti este código abaixo e recebi 90% WA. Se alguém puder me ajudar a finalizar este código, pode ser dica, ou até onde meu código está errando. Por mais agradeço a ajuda.
Segue o código abaixo:
Resolvido :)
-
pmoggi replied 9 years ago
**OBS: Acabei achando a resposta para minha pergunta:
- O algoritmo deve parar quando a primeira entrada da permutação for 0 Seria interessante alterarem essa parte na descrição do problema para não haver mais confusões **
Olá a todos, Estou com uma pequena duvida na seguinte parte da descrição:
"Em cada uma das próximas N linhas de entrada haverá uma permutação..."
Exatamente N linhas ou ? Pois o toolkit aceita mais de N linhas
E o Cristhian "comentou" um caso de teste que ultrapassa essas N linhas no caso, 5:
... Estou recebendo 10% resposta errada e creio que seja pelo fato do meu algoritmo estar preso em N linhas
**OBS: Acabei achando a resposta para minha pergunta:
- O algoritmo deve parar quando a primeira entrada da permutação for 0 Seria interessante alterarem essa parte na descrição do problema para não haver mais confusões **
-
ggroth replied 9 years ago
estou recebendo wa sem porcentagem... o q pode ser?[/quote]
Teste com a seguinte entrada:
5 3 2 5 4 1 0 0
Dica: esse problema é mais fácil de ser resolvido usando a implementação de pilha da stl (stack)
-
mfdoliveira replied 9 years ago
#include <conio.h> #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int i; int contzero = 0; scanf("%d", &i); int lasti = i; //vetor int indVetor = 0; int Vetor[1000]; //pilha int Pilha[1000]; int addPilha = 0; //indica em que altura deve-se add na pilha int indPilha = -1; //indica em que altura esta na pilha int j = 0; while ( i > 0 && contzero < 2) { while (j < i) { scanf("%d", &Vetor[j]); j++; } bool erro = false; int a = 1; while( indVetor < i && !erro) { if (Vetor[indVetor] == a) { indVetor++; a++; } else if (Pilha[indPilha] > 0 && indPilha >= 0 && Pilha[indPilha] == Vetor[indVetor]) { Pilha[indPilha] = 0; if (indPilha != 0) { indPilha--; } indVetor++; } else if (a <= i) { Pilha[addPilha] = a; addPilha++; indPilha = addPilha-1; a++; } else { erro = true; } } if (erro == true) { printf("No\n"); } else { printf("Yes\n"); } //vetor indVetor = 0; Vetor[1000] = NULL; //pilha Pilha[1000] = NULL; addPilha = 0; //indica em que altura deve-se add na pilha indPilha = -1; //indica em que altura esta na pilha scanf("%d", &i); if (i == 0) { contzero++; scanf("%d", &i); lasti = i; //if (i != 0) //{ printf("\n"); //} j = 0; } else { j = 1; Vetor[0] = i; i = lasti; contzero = 0; } } return 0; }
estou recebendo wa sem porcentagem... o q pode ser?
-
aluiz1 replied 9 years ago
Estou obtendo 10% de erro e não consigo achar =/. O que está faltando?
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Stack; public class Main { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out)); boolean iniciou = false; while(true){ int n = Integer.valueOf(in.readLine()); if (n==0) break; if (iniciou){ writer.newLine(); iniciou=false; } String[] linha = null; while(true){ linha = in.readLine().split(" "); if (linha.length==1) break; Stack<Integer> pilha = new Stack<Integer>(); Stack<Integer> pilha2 = new Stack<Integer>(); for(int i=n-1;i>=0;i--) pilha2.add(Integer.valueOf(linha[i])); int i=1; while(true){ pilha.add(i); while (true){ if (pilha.isEmpty() || pilha2.isEmpty()) break; if (pilha2.peek()==pilha.peek()){ pilha.pop(); pilha2.pop(); }else break; } if (i==n) break; i++; } if (pilha.empty()) writer.write("Yes"); else writer.write("No"); writer.newLine(); } iniciou=true;} writer.flush(); } }
-
oman10 replied 9 years ago
Não entendi o problema. :( Alguma dica? Não entendi o porque do Yes ou No. 4 2 3 1 5 - No 2 3 1 5 4 - Yes
Alguma dica que explique o motivo do primeiro ser No e não Yes? Não entendi muito bem. Se puder me dizer.
-
fptominc replied on Jun 15 2013
Tenho, as unicas variaveis que eu realmente preciso me preocupar em zerar são as 2 pilhas, ja que o resto eu leio todas as vezes... Zero as pilhas sempre que chego no final do processamento ou o cara entra com o 0 no nivel mais interno... Acho que estou enfrentando aquele paradigma da computação: "Na minha maquina funciona" haha
-
jbez10 replied on Jun 15 2013
Tem certeza que a pilha está sendo limpa e as variáveis resetadas a cada caso de teste?
Peço isso porque aquele caso que te enviei por email era o 4º caso de teste e no primeiro, que continha a mesma sequência ele deu a resposta correta. Tente verificar isso, talvez ajude.
-
fptominc replied on Jun 15 2013
Ola Cristhian, obrigado pelas entradas... Enfim, testei aqui e a unica diferença da minha saida com a do toolkit foi uma linha em branco no final do arquivo... Coloquei para imprimi-la e submeti novamente, porem recebi WA como resposta... Ja to desanimando com esse problema :(
-
crbonilha replied on Jun 15 2013
Bom, apelei e gerei todos as permutações possíveis:
https://www.dropbox.com/s/c3ea896cb8v02 ... os_in2.txtDe 3 a 6, espero que sirva.
-
fptominc replied on Jun 14 2013
Boa noite, estou recebendo wrong answer apesar de todos os testes que eu fiz produzirem o resultado correto... Alguem pode me ajudar a tentar encontrar meu erro??
#include <cstdio> #include <iostream> #include <cstdlib> #include <cmath> #include <algorithm> using namespace std; template <class T1> class Pilha { private: T1 A[1001]; int topo; public: Pilha(); T1 pop(); void Push(T1 A); bool Pilhavazia(); void EsvaziaPilha(); T1 Checktopo(); }; template <class T1> Pilha<T1>::Pilha() { topo = -1; } template <class T1> T1 Pilha<T1>::pop() { return (this->A[this->topo--]); } template<class T1> void Pilha<T1>::Push(T1 A) { this->A[++this->topo] = A; } template<class T1> bool Pilha<T1>::Pilhavazia() { return (this->topo == -1); } template<class T1> void Pilha<T1>::EsvaziaPilha() { this->topo = -1; } template<class T1> T1 Pilha<T1>::Checktopo() { return (this->A[this->topo]); } int main(int argc, char **argv){ Pilha<int> A,B; int N,S[1000]; Fora: while(scanf("%d", &N)&&N){ Top: for (int i = N; i >0 ; i--){ A.Push(i); } for (int i = 0; i < N; i++){ scanf("%d", &S[i]); if(i==0 && S[0] == 0){ A.EsvaziaPilha(); B.EsvaziaPilha(); puts(""); goto Fora; } } for (int i = 0; i < N; i++){ while(A.Checktopo() < S[i] && !A.Pilhavazia()){ B.Push(A.pop()); } if(A.Checktopo() == S[i]){ A.pop(); } if(B.Checktopo() == S[i]){ B.pop(); } } if(A.Pilhavazia() && B.Pilhavazia()){ printf("Yes\n"); }else printf("No\n"); A.EsvaziaPilha(); B.EsvaziaPilha(); goto Top; } return 0; }
PS: Desconsiderem os goto haha
-
jbez10 replied on Jun 14 2013
Qual é o número da sua submissão?
Alguma entradas do portal são as originais, disponíveis em outros locais, porém outras são geradas para testar diversos casos de teste, inclusive os casos de borda. Por isso alguns problemas acabam não passando aqui.
-
fptominc replied on Jun 14 2013
Olá Cristhian, obrigado pelas entradas mas infelizmente essas entradas não ajudaram a encontrar o erro... O engraçado é que consegui accepted no UVA e no ACM e aqui não passa :(
-
fptominc replied on Jun 13 2013
Alguem tem mais casos de testes? ja testei com varios e nada de accepted :/