TOPIC

PROBLEM 1105 - URI Fórum 1.0

beecrowd asked on Feb 8 2013

URI Online Judge Fórum 1.0

MOD

This topic was solved and cannot recieve new replies.

  • psilva replied on Mar 9 2014

    Estou recebendo "Wrong answer", mas nao sei pq, nao consegui encontrar o erro, alguem pode me ajudar?

    Resolvido

    Obrigado

  • crbonilha replied on Mar 13 2014

    Percebeu que você nunca usou a variável N ali? Aquele segundo laço devia ser em função de N, não de B, conforme diz o enunciado.

    Tente calcular a reserva de cada banco dentro daquele laço, usando o identificador que lhe é passado. Cuidado ao guardar os valores, pois seu vetor tem B posições, de 0 a B-1, e os bancos são identificados de 1 a B, inclusive.

  • oman10 replied on Dec 27 2013

    Aleluiaaaaaa, agora sim, Accepted. kkkkkkkkkkkkkkk. Valeu demais pela dica. Tá meio tenso de fazer, terminei o primeiro período de ciência da computação, estou de férias e agora estou estudando sozinho, dai dependo muito da ajuda de vocês. Por eu estar de férias da faculdade, daí não tem como tirar dúvida com os professores. Mas vamo em frente, ficar em primeiro aqui no uri é minha meta. kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk.

    Muito obrigado pela ajuda.

  • thalyson004 replied 8 years ago

    Problemas da maratona tem as entradas e saídas disponíveis no site oficial. Podem olhar lá quais casos seus algoritmos falham.

  • fgalmeida replied 9 years ago

    Funcionou nos para os 3 casos dados, mas mesmo assim deu Wrong Answer, alguém ajuda? Vlw (:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[]) {
    
    int B;
    int N;
    int C;
    int D;
    int V;
    int i;
    
    scanf("%d",&B);
    scanf("%d",&N);
    
    while((B!=0)&&(N!=0)){
    
    int R[B+1];
    
    for(i=0;i<B;i++){
    scanf("%d",&R[i]);
    
    scanf("%d",&D);
    scanf("%d",&C);
    scanf("%d",&V);
    
    R[D]=R[D]-V;
    R[C]=R[D]+V;
    
    if(R[D]>=0){
    printf("S\n");
    }
    else{
    printf("N\n");
    }
    }
    
    for(i=0;i<B;i++){
    R[i]==0;
    }
    
    scanf("%d",&B);
    scanf("%d",&N);
    
    }
    
    return 0;
    }
  • crbonilha replied on Dec 21 2013

    Ok, mas independente do número de sujeitos, a lógica é a mesma.

    Vamos ver:

    3 3
    1 1 1
    1 2 1
    2 3 2
    3 1 3

    3 bancos e 3 debêntues, certo?

    A segunda linha contém a reserva de cada banco, no caso 1 para os três.

    A partir da terceira linha temos as debêntues, que iremos representar por D, C e V. O banco D deve V "reais" para o banco C.

    Primeira debêntue:

    1 2 1

    O banco 1 deve 1 "real" para o banco 2. Lembrando, o banco 1 tinha 1 real na reserva, portanto ele consegue pagar a dívida de 1 real para o banco 2. Agora, o banco 2 tem 2 reais na reserva.

    Segunda:

    2 3 2

    O banco 2 deve 2 reais para o banco 3. O banco 2, que agora tem 2 reais na reserva, pode pagar o banco 3. Agora o banco 2 tem 0 reais na reserva, e o banco 3 tem 3 reais na reserva (2+1).

    A terceira fica como exercício pra você.

    Note que os pagamentos não precisam ser feitos na ordem listada, mas basta que os bancos consigam provar que, com o dinheiro que eles tem a receber, eles conseguem pagar todas as dívidas que eles tem.

  • jgil10 replied 8 years ago

    Alguém pode me ajudar com Runtime Error

    include <bits/stdc++.h>

    using namespace std;

    vector banks(22);

    int main(){ int b, n, cont=1; int vc[21]; bool flag = true; bool otherflag = false; while(cin >> b >> n && b != 0 && n != 0){ for(int i=1; i<=b; i++){ int vb; cin >> vb; banks[i] = vb; } while(n--){ int d, c, v; cin >> d >> c >> v; vc[cont] = v; if(v <= banks[d]){ banks[c] += v; banks[d] -= v; }else{ flag = false; } if(vc[cont-1] == v){ otherflag = true; }else{ otherflag = false; } cont = cont + 1; } if(flag || otherflag){ cout << "Y" << endl; }else{ cout << "N" << endl; } } return 0; }

  • rthales replied 8 years ago

    usem fluxo que da certo! :P quero ver implementar kk

  • phtenorio replied 8 years ago

    Wrong Answer 10%, alguem poderia me ajudar a achar o erro?

    import java.util.Scanner;
    
    public class Uri {
        public static void main(String[] args) {
    
            int out=0;//=1 gera output para testes
            int quantidade_bancos,debentures,mudanca,i,j;
            int credito_bancos[][]=new int[1][20],positivo[][]=new int[1][20],negativo[][]=new int[1][20];
            int matriz[][]=new int[20][3];
            int devedor,credor,valor,caixa;
            Scanner scam = new Scanner(System.in);
            while (true)
            {
                quantidade_bancos=scam.nextInt();
                debentures=scam.nextInt();
                if (out==1)
                {
                    System.out.printf("Entradas:\nQuantidade bancos: %d\nDebentures:  %d\n",quantidade_bancos,debentures);
                }
                if (quantidade_bancos==0&&debentures==0)
                {
                    break;
                }
                for (i=0;i<quantidade_bancos;i++)
                {
                    credito_bancos[0][i]=scam.nextInt();
                }//fim for
                if (out==1)
                {
                    System.out.println("Credito dos bancos:\n");
                    for (i=0;i<quantidade_bancos;i++)
                    {
                        System.out.printf("%d ",credito_bancos[0][i]);
                        System.out.println("");
                    }//fim for
                }//fim if
                for (i=0;i<debentures;i++)
                {
                    matriz[i][0]=scam.nextInt();
                    matriz[i][1]=scam.nextInt();
                    matriz[i][2]=scam.nextInt();
                    if (out==1)
                    {
                        System.out.printf("Matriz %d 0: %d\nMatriz %d 1: %d\nMatriz %d 2: %d\n",i,matriz[i][0],i,matriz[i][1],i,matriz[i][2]);
                    }//fim if
                }//fim for
                if (out==1)
                {
                    System.out.println("Imprimindo matriz inteira");
                    for (i=0;i<debentures;i++)
                    {
                        System.out.printf("%d %d %d\n",matriz[i][0],matriz[i][1],matriz[i][2]);
                    }//fim for
                }//fim if
                if (out==1)
                    {
                        System.out.println("Fim coleta de dados, agora processa-los");
                    }
                for (i=0;i<debentures;i++)
                {
                    devedor=matriz[i][0];
                    credor=matriz[i][1];
                    valor=matriz[i][2];
                    negativo[0][devedor-1]=negativo[0][devedor-1]+valor;
                    positivo[0][credor-1]=positivo[0][credor-1]+valor;
                    if (out==1)
                    {
                        System.out.printf("Saldos:\n");
                        for (j=0;j<quantidade_bancos;j++)
                        {
                            System.out.printf("Banco %d positivo %d negativo %d\n\n",j,positivo[0][j],negativo[0][j]);
                        }
                    }
                }
                j=0;
                for (i=0;i<debentures;i++)
                {
                    if (negativo[0][i]>(positivo[0][i]+credito_bancos[0][i]))
                    {
                        j=1;
                        break;
                    }//fim if
                }//fim for
                if (j==0)
                {
                    System.out.println("S");
                }//fim if
                else
                {
                    System.out.println("N");
                }//fim else
                for (i=0;i<debentures;i++)
                {
                    negativo[0][i]=0;
                    positivo[0][i]=0;
                }
            }//fim while
        }//fim main
    }//fim class
  • casierra replied 9 years ago

    Hi, try changing R[C]=R[D]+V; by R[C]=R[C]+V;. That's the first error. The second error, is that you print for each N, not for each CASE. I hope that you can fixed it. Goodbye.

  • crbonilha replied on Mar 21 2014

    Por segurança e boas práticas, declare seus vetores com tamanho maior ou igual ao maior valor possível das variáveis, ou seja, em vez de declarar R[B], note que B <= 20, e declare R[21].

  • psilva replied on Mar 19 2014

    Pensei que tinha resolvido, mas nao consegui, está aparecendo "Runtime error", alguem pode me dar alguma dica?

    Resolvido

    Obrigado

  • ggroth replied on Jan 14 2014

    O que acontece se mais de um banco estiver negativo? Dê uma analisada nessa parte...

  • lschlindwein replied on Jan 14 2014

    WA 10% :D Qual possivel erro?

  • crbonilha replied on Dec 28 2013

    Continue assim, boa sorte!

  • crbonilha replied on Dec 26 2013

    Você fez quase tudo certo, só se enganou em uma coisa. No final, você precisa verificar entre todos os bancos, se algum deles está com saldo negativo ou não. Você verificou em dois apenas.

  • oman10 replied on Dec 23 2013

    Nossa esse problema tá me deixando pirado. Antes eu não entendia como fazer, agora sei como fazer, mas não consigo outra resposta que não seja 20%. Dá só mais uma ajudinha ai pra eu sair desse problema.

    os testes que eu fiz.

    3 3
    1 1 1
    1 2 1
    2 3 2
    3 1 3
    3 3
    1 1 1
    1 2 1
    2 3 2
    3 1 4
    3 3
    1 1 1
    1 2 2
    2 3 2
    3 1 2
    3 3
    2 2 2
    2 1 4
    1 3 2
    3 2 1
    0 0

    meu código mudado e rastreado:

    Resolvido
  • oman10 replied on Dec 23 2013

    Eu fiz um POG aqui e acertei na resposta, só que deu Wrong answer (20%). Mas a sua explicação foi uma luz no fim do túnel, já estava para desistir. hehehehe.

    Segue meu código se quiser analisar:

    Resolvido
  • oman10 replied on Dec 23 2013

    Entendi. 3 1 3

    O banco 3 deve 3 reais para o banco 1, e ele está com 3 na reserva, então consegue pagar. Vlw, pela explicação, agora vou ver se consigo implementar em código com o conhecimento que já tenho, pois terminei o primeiro período de Ciência da computação e não conheço muitas técnicas ainda. Mas valeu demais a sua explicação. Muito obrigado mesmo.

  • oman10 replied on Dec 21 2013

    Alguém pode me ajudar com mais alguma informação, ainda não consegui entender uma forma de resolver este problema.

1 of 2