TOPIC

PROBLEM 1211 - URI Fórum 1.0

URI Online Judge asked 8 years ago

URI Online Judge Fórum 1.0

MOD

This topic was solved and cannot recieve new replies.

  • Caique Duarte replied 4 years ago

    Segundo o Toolkit, para a entrada: 4 999 998 987 998 Temos a saída: 6

    Gostaria de saber o motivo desta saída, talvez eu tenha deixado passar alguma informação na descrição do exercício, pois pelo que eu entendi a saida seria 4, já que os números ficariam: 999 8 87 98

  • Caio Russi replied 6 years ago

    Fala filipetrm, você pode reduzir o tempo e a complexidade da solução ordenando as strings em ordem crescente e a partir disto você só precisa verificar cada string com a string anterior. Fica a seu cargo agora ver o por que disso dar certo, vlw.

  • Cristhian Bonilha replied 8 years ago

    Será que tem como alguém conferir o resultado para esse caso de entrada por mim? O Toolkit não aceita entradas muito grandes.

    https://www.dropbox.com/s/cbdfam0ju4a8cog/out.txt

    A saída aqui deu 33146.

  • Guilherme Schults replied 4 years ago

    #include <stdio.h>
    
    int main()
    {
       int N, A, i, b;
       char N1[300], N2[250];
    
       while(scanf("%d%*c",&N)!= EOF)
       {
    
          scanf("%s", N1);
          b=0;
    
          for(A = 1; A < N; A++){
    
             scanf("%s",N2);
    
             for(i = 0; N1[i]; i++){
                if(N1[i] == N2[i]){
                b++;
                }
                else{
                break;
                }
            }
         for(i = 0; N1[i]; i++)
            N1[i] = N2[i];
          }
    
          printf("%d\n", b);
       }
       return 0;
    }

    Gente, alguém me ajuda por favor. O que tem de errado?

  • João Henrique Damazio replied 4 years ago

    eu queria ordenar colocando todos os números em uma matriz de string, teria como eu fazer isso em c, porque o limite é 100000 e isso faz ter erro quando executo

  • Rafael Pereira Sousa da Costa replied 5 years ago

    Está dando Wrong answer, alguém sabe porque?

    #include <stdio.h>
    
    int main()
    {
       int N,A,I,P;
       char Na[300],Nb[250];
       while(scanf("%d%*c",&N)!=EOF)
       { 
    
          scanf("%s",Na);
          P=0;
          for(A=1;A<N;A++)
          {
             scanf("%s",Nb);
             for(I=0;Na[I];I++)
             {
                if(Na[I]==Nb[I])
                P++;
                else
                break; 
             }
         for(I=0;Na[I];I++)    
         Na[I]=Nb[I];
    
          }
          printf("%d\n",P);
       }
       return 0;
    }
  • Mohammad Abdul Aziz replied 5 years ago

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<vector>
    #include<stack>
    #include<cctype>
    #include<cstdlib>
    #include<cmath>
    #include<climits>
    #include<ctime>
    #include<queue>
    
    bool great(int a, int b){
        return (a > b);
    }
    
    #define f(n) for(int i=0;i<n;i++)
    #define lli long long int
    #define LD long long double
    #define pi 3.161549
    
    using namespace std;
    
    int main(){
        int n;
        while (cin >> n){
            int c = 0;
            char str[210]; 
            scanf("%s", str);
            for (int i = 1; i < n; i++){
                char A[210];
                scanf("%s", A);
                int len = strlen(str);
                for (int i = 0; i < len; i++){
                    if (str[i] == A[i])
                        c++;
                    else
                        break;
                }
            }
            cout << c << endl;
        }
    
        return 0;
    }

    I received wrong answer(80%). Can someone help me out with the corner case.

  • DuMal Dom replied 5 years ago

    Estou recebendo Wrong answer (80%)

    #include<bits/stdc++.h>
    #include<cstdio>
    using namespace std;
    
    bool cmp (const string& f, const string& s)
    {
      return f[0] > s[0] ;
    }
    int main()
    {
        int n,cont =0,i,j;
        string s, ss;
        list<string> str;
        list<string>::iterator it ;
        while(scanf("%d",&n) != EOF)
        {
            j=0;
            while(j++ < n)
            {
                cin  >> ss;
                str.push_back(ss);
            }
            str.sort(cmp);
            cont=0;
            it = str.begin();
            s = *it;
            j=0;
            it++;
            while(++j<n)
            {
    
                ss= *it;
                i=0;
                while(s[i] != '\0' && ss[i]==s[i++] )
                {
                    cont ++;
                }
                if(i==1) s= *it;
                it++;
            }
            printf("%d\n",cont);
            str.clear();
        }
        return 0;
    }
  • Han replied 5 years ago

    Resolvi o problema usando Trie também, testei com o caso de teste oficial e todas as respostas batem! Porém tomo 100% wa assim como alguns já postaram, há alguma coisa errada com o meu código?

    #include <bits/stdc++.h>
    
    using namespace std;
    int cont;
    
    struct Trie{
         bool fim;
         Trie *next[11];
         Trie(){
            fim = false;
            memset(next, 0, sizeof next);
         }
    };
    
    void insere(char *t, Trie *r){
         for (int i = 0; t[i]; ++i){
             int c = t[i]-'0';
             if (!r->next[c]){
                r -> next[c] = new Trie;
                cont++;
             }
             r = r->next[c];
         }
         r -> fim = true;
    }
    
    int main(){
         int total;
         int n;
    
         //freopen("C:\\And\\lista.txt","r",stdin);
    
         while(scanf("%d",&n)!=EOF){
             Trie t;
             cont=total=0;
             char num[202];
             for(int j=0; j<n; j++){
                scanf("%s",num);
                total+=strlen(num);
                insere(num,&t);
             }
             printf("%d\n",total-cont);
         }
         return 0;
    }
  • Robson Ribeiro Faxas replied 6 years ago

    WA 10%, alguém pode me ajudar?

    import java.io.*;
    import java.io.InputStreamReader;
    import java.util.Arrays;
    
    public class Main {
        private static String[] valor;
    
        private static void conta(Integer n) throws IOException{
            int i,j,k;
            int cont=0;
            int maximo = 0;        
            valor = new String[n];
            String aux;
            BufferedReader str = new BufferedReader(new InputStreamReader(System.in));
            BufferedWriter log = new BufferedWriter(new OutputStreamWriter(System.out));
    
            for (i=0; i<n; i++){ 
                aux = null;
                if ( (aux = str.readLine() ) != null){                
                    valor[i] = aux;
                } else {
                    valor[i] = "";
                }                
            }        
    
            Arrays.sort(valor);
            if(n>0)
                maximo = valor[0].length();
            for (i=0; i<n-1; i++){            
                    for(k=0; k<maximo; k++){
                        if ( valor[i].charAt(k) != '\n' && valor[i].charAt(k) == valor[i+1].charAt(k)) {
                              cont++;
                        } else break;
                    }            
            }
            log.write(cont + "\n");
                    log.flush();         
        }
    
        public static void main(String[] args) throws IOException {
    
            BufferedReader sc = new BufferedReader(new InputStreamReader(System.in));
            try {
                int N;
                String str = null;
                while ((str = sc.readLine()) != null) {
                    N = Integer.parseInt(str.trim());
                    conta(N);
                }
            }
            catch(Exception ex){
    
            }
        }      
    }
  • Eike Natan Sousa Brito replied 6 years ago

    Código feito em C.

    Removido!!!

    Editado por Russi: Por favor não colocar a solução completa do problema.

  • Filipe Teotônio Ramalho Mendonça replied 6 years ago

    Galera, eu consegui resolver o problema, porém com um tempo muito grande (aprox. 1.2 seg). Eu acredito que fiz usando Brute Force. Gostaria de saber se há algum outro modo que me permita reduzir esse tempo. Dicas e sugestões serão bem-vindas :)

  • Fabio Z replied 6 years ago

    Eis aí o código. Dá WA 100%. Estou esquecendo de algum detalhe? Agradeço antecipadamente.

    código removido

    UPDATE: Acabei recebendo AC implementando com vector, mas deixo a discussão sobre tries em aberto. UPDATE 2: A implementação com uso de tries foi aceita depois do rejulgamento do problema em 05/06.

  • Fabio Z replied 6 years ago

    Olá a todos, estou com um problema igual ao seu, Caribe, usei tries, comparei as respostas com as fornecidas na maratona e deu ok, coloquei alguns dos casos no toolkit e deu ok também, mas o portal me dá Wrong Answer 100%. O que pode ser? Agradeço antecipadamente.

  • Filipe Teotônio Ramalho Mendonça replied 6 years ago

    Tô recebendo WA 90% mas não consigo ver o erro. Os casos que testei até agora bateram com os do toolkit. Espero que alguém possa me ajudar, valeu!

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    #include <map>
    #include <vector>
    #include <iomanip>
    #include <iostream>
    #include <sstream>
    #include <queue>
    
    using namespace std;
    
    //typedef unsigned long long int ull;
    
    int main()
    {
        int n;
    
        while(cin>>n)
        {
            string in[n+2];
            int cont = 0;
    
            for(int k = 0; k < n; k++)
              cin >> in[k];
    
           for (char a = '0'; a <= '9'; a++)
           {
               queue<int> pos;
    
    //           535456
    //           535488
    //           835456
    
                for(int x = 0; x < n; x++)
                {
                    if(in[x][0] == a)
                    {
                        if(pos.empty())
                            pos.push(x);
    
                        else
                        {
                            for(int i = 0; in[pos.front()][i] != '\0'; i++)
                            {
                                if(in[x][i] == in[pos.front()][i])
                                    cont++;
    
                                else
                                    break;
                            }
                        }
                    }
                }
           }
    
            cout << cont << endl;
            cont = 0;
        }
    
        return 0;
    }
  • Ramon Honorio replied 6 years ago

    E ai pessoal, tudo bem? Estou enviando o codigo abaixo e o URI me da como resposta Wrong Answer 90%. Quem puder me ajudar, ja mando meu obrigado! xD

    //Resolvido!
  • Caribé replied 6 years ago

    Qual será o problema quando recebo WA sem percentual? Estou tentando resolver este problema usando tries, as minhas respostas batem com todas as entradas presentes aqui:

    http://www.ime.usp.br/~cef/XVImaratona/ ... s/lista.in

    mas recebo WA sem percentual aqui no site. Alguém pode ajudar?

  • VictorCPBarbosa replied 7 years ago

    Removido

  • Ronaldo Alves replied 7 years ago

    Pessoal eu testei as entradas postadas aqui e obtive resposta certa em todas, mas recebo WA 10% e não sei qual caso de teste que falha. Se alguém puder ajudar...

    Achei meu erro :) dez anos depois kkkk
  • Cristhian Bonilha replied 7 years ago

    Aqui estão mais "alguns" (todos): in - http://www.ime.usp.br/~cef/XVImaratona/ ... s/lista.in out - http://www.ime.usp.br/~cef/XVImaratona/ ... /lista.sol

1 of 3