TÓPICO

PROBLEM 1661 - URI Fórum 1.0

URI Online Judge perguntou 6 years ago

URI Online Judge Fórum 1.0

MOD

Este tópico foi resolvido e não pode receber novas respostas.

  • Unknown respondido 4 years ago

    Hey guys. I have a trouble with my code; I prove it in my machine, and all seems good. But, when I submit I get a "Runtime error" notificacion. Someone can help me? I can't understand which one is the error. Thanks a lot.

    #include <stdio.h>
    #include <stdbool.h>
    
    int minimum(int a, int b)
    {
        return a < b ? a : b;
    }
    
    int main ()
    {
        int n, i;
        int houses[10001];
        scanf ("%d", &n);
    
        while (n != 0)
        {
          for ( i = 0; i < n; i++)
          {
                scanf ("%d", &houses[i]);
          }
    
          int index = 0;
          bool positive;
          int min;
          long long work = 0;
    
          while(index < n)
          {
              if(houses[index] != 0)
              {
                  positive = houses[index] < 0 ? false : true;
    
                  for(i = index + 1; i < n; i++)
                  {
                      min = 0;
                      if(positive)
                      {
                          if(houses[i] < 0)
                          {
                              min = minimum(houses[index], houses[i] * (-1));
                              houses[index] -= min;
                              houses[i] += min;
                          }
                      }
                      else
                      {
                          if(houses[i] > 0)
                          {
                              min = minimum(houses[index] * (-1), houses[i]);
                              houses[index] += min;
                              houses[i] -= min;
                          }
                      }
    
                      work += (min * (i - index));
    
                      if(houses[index] == 0)
                          break;
                  }
              }
    
              index += 1;
          }
    
          printf("%lld\n", work);
          scanf("%d", &n);
        }
    
        return 0;
    }
  • Old man respondido 6 years ago

    Você pode assumir que este número cabe em um inteiro de 64 bits com sinal (em C/C++ você pode usar o tipo de dados "long long", em JAVA o tipo de dados "long")

    O seu t precisa suportar um inteiro de 64 bits com sinal. Basta corrigir isto que dá certo.

    Espero ter ajudado. Att. Leoci Melo https://www.youtube.com/channel/UC6OC7HH_zODBYmG6cuejEWw

  • Domitila Crispim Pietropaolo respondido 6 years ago

    #include <stdio.h>
    int main (){
        int a, c, v, d[100001], t;
        while (1){
            scanf ("%d", &a);
            if (a==0){
                break;
            }
            for (c=0; c<a; c++){
                    scanf ("%d", &d[c]);
            }
            t=0;
            for (c=1; c<a; c++){
                if (d[c-1]<0){
                        t=t+(-1)*d[c-1];
                }
                else {
                        t+=d[c-1];
                }
                d[c]+=d[c-1];
            }
            printf ("%d\n", t);
            }
        }

    WA 10%