TOPIC

PROBLEM 1277 - URI Fórum 1.0

URI Online Judge asked 6 years ago

URI Online Judge Fórum 1.0

MOD

This topic was solved and cannot recieve new replies.

  • Gerson Groth replied 4 years ago

    Repare que o último aluno pode ter cumprido a presença mínima e, dessa forma, vai sobrar um espaço no final da linha. Por isso, PE. Você pode tentar imprimir um espaço antes de cada aluno (que não cumpriu a presença mínima), exceto o primeiro...

  • Matheus Leão replied 4 years ago

    Observe o texto inicial: "‘A’ indica que ele estava ausente (ele cabulou à aula) e ‘M’ mostra que, apesar de não ir à aula, ele entregou um atestado médico, então esta aula não deverá ser considerada no cálculo da frequência do estudante." No caso, para M você considera que não houve aula.

  • João Victor Lima de Souza replied 2 years ago

    Po cara, tb estou com o mesmo problema, 10%wa. Gostaria de saber onde vc colocou a quebra de linha. No meu codigo, se eu coloco quebra de linha no final, de 10%wa, sobe pra 60%wa. Ja n sei o q fazer. Testei quase todas as possibilidades. Se vc puder me ajudar, ficarei bastante agradecido.

  • felipeCaetano replied 2 years ago

    Pessoal, alguém pode me ajudar? Meu codigo está com WA 20% já testei todos os casos testes daqui e do uDebug e não consigo enxergar onde estou falhando:

    T=int(input())
    for t in range(T):
        alunos=[]
        n=int(input())
        nomes=input().split()
        frequencia=input().split()
        for nome in nomes:
            i =nomes.index(nome)
            aulas=len(frequencia[i])
            m=frequencia[i].count('M')
            total=aulas-m
            p=float(frequencia[i].count('P'))
            if p<.75*total:
                alunos.append(nome)
        if len(alunos)==0:
                print("")
        for a in alunos:
            if a!=alunos[len(alunos)-1]:
                print(a,end=" ")
            else:
                print(a)
    print()
  • Rafael Prado replied 2 years ago

    Boa noite!

    Estou recebendo 40% WA, porém todos os testes que realizei tiveram um resultado bem sucedido, de acordo com o uDebug. Gostaria de saber se há quaisquer orientações que eu possa seguir para atingir o AC!

    Resolvido
  • Marcus Antunius replied 3 years ago

    WA10%

    #include <iostream>
    #include <string.h>
    using namespace std;
    struct Freq{
        char nome[50];
        char presenca[200];
        double aula_cumprida=0;
        double aula_total=0;
    };
    int main()
    {
        int T;
        cin>>T;
        for(int i=0;i<T;i++){
    
            int N;
            cin>>N;
            Freq Frequencia[N];
            for(int j=0;j<N;j++){
                scanf("%s",Frequencia[j].nome);
            }
            for(int j=0;j<N;j++){
                scanf("%s",Frequencia[j].presenca);
    
                for(int k=0;k<strlen(Frequencia[j].presenca);k++){
                    if(Frequencia[j].presenca[k]=='A'){
                        Frequencia[j].aula_total++;
    
                    }
                    if(Frequencia[j].presenca[k]=='P'){
                        Frequencia[j].aula_total++;
                        Frequencia[j].aula_cumprida++;
                    }
                }
            }
            bool primeiro=true;
            for(int j=0;j<N;j++){
                if(((Frequencia[j].aula_cumprida*100)/Frequencia[j].aula_total)<75.0){
                    if(primeiro){
                        cout<<Frequencia[j].nome;
                        primeiro=false;
                    }else{
                        cout<<" "<<Frequencia[j].nome;
                    }
                }
            }
           cout<<endl;
        }
    
        return 0;
    }
  • Augusto Cesar replied 3 years ago

    Personas, alguém pode dar uma luz sobre o que estou errando? Testei todas as entradas do Fórum e da descrição, mas ainda estou recebendo Wrong Answer (30%)

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
        int n, al, p, total;
        double media;
        cin >> n;
        while(n-- )
        {
    
            cin >> al;
            string aluno[al], chamada[al], reprovado = "";
            for(int i=0 ; i<al; i++)
                cin >> aluno[i];
            for(int i=0 ; i<al; i++)
                cin >> chamada[i];
            for(int i=0, size; i<al; i++)
            {
                p = 0; total = 0;
                size = chamada[i].size();
    
                for(int j=0; j<size; j++)
                {
                    if(chamada[i][j] == 'P')
                    {total++; p++;}
                    else if(chamada[i][j] == 'M' && total > 0)
                        total--;
                    else
                        total++;
                }
                media =(double) (p*100)/total;
                //cout << p <<" "<< total<<" "<< " "<<media << endl;
                if(media < 75.0)
                {   reprovado += aluno[i] + " ";}
            }
            cout << reprovado.substr(0, reprovado.size()-1) << endl;
        }
    
    }
  • Mateus Melo replied 3 years ago

    Você chegou a rodar esse código??? A função stpcpy não existe até onde eu sei.

  • Gabriel Oraboni Carvalho replied 3 years ago

    Qual o erro do meu código? sempre dá WA 20%. Obrigado a todos

    Scanner leitor = new Scanner(System.in);
            Integer casos = Integer.valueOf(leitor.nextLine());
            for(int i = 0; i < casos; i++) {
            //while(leitor.hasNext()) {
                Integer qt = Integer.valueOf(leitor.nextLine());
                String[] nomes = leitor.nextLine().split(" ");
                String[] frequencia = leitor.nextLine().split(" ");
                String resposta = "";
                for(int j = 0; j < frequencia.length; j++) {
                    char[] presenca = frequencia[j].toCharArray();
                    int aulas = presenca.length;
                    int aulasTotais = aulas;
                    int faltas = 0;
                    for(char c : presenca) {
                        if(c == 'A') {
                            faltas++;
                            continue;
                        }
                        if(c == 'M') {
                            aulasTotais--;
                        }
                    }
                    if(100.0 * faltas / aulasTotais > 25.0) {
                        resposta += nomes[j] + " ";
                    }
                }
    
                String[] escrita = resposta.split(" ");
                for(String s : escrita) {
                    System.out.print(s);
                    if(!s.equals(escrita[escrita.length-1])) {
                        System.out.print(" ");
                    } else {
                        System.out.println("");
                    }
                }
            }
  • dididide replied 4 years ago

    alguma alma caridosa consegue me dizer por que esta dando runtime error? :C

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    typedef struct{
            char nome[200],
            freq[200];
            int aulas,
            exame;
        }Aluno;
    
    void limpabuffer()
    {
        while(getchar() != '\n');
    }
    
    int main()
    {
        Aluno A[200];
        int c=0,scan=0,pres,cont,numero,cc,qtd,aprov;
        char nomes[200], * tok,frequencias[200];
        scanf("%d",&qtd);
        while(qtd>0)
        {
            tok = strtok (nomes,"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz");
            while (tok != NULL)
            {
                stpcpy(A[c].nome,tok);
                stpcpy(A[c].freq,tok);
                tok = strtok (NULL,"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz");
                c++;
            }
            c=0;
            scanf("%d",&numero);
            limpabuffer();
            fgets(nomes, 200, stdin);
            cont = 0;
            while(nomes[cont] != '\n' && nomes[cont] != '\r')
                cont++;
            nomes[cont] = '\0';
            tok = strtok (nomes," ");
            while (tok != NULL)
            {
                stpcpy(A[c].nome,tok);
                tok = strtok (NULL," ");
                c++;
            }
            fgets(frequencias, 200, stdin);
            cont = 0;
            while(frequencias[cont] != '\n' && frequencias[cont] != '\r')
                cont++;
            frequencias[cont] = '\0';
            c=0;
            tok = strtok (frequencias," ");
    
            while (tok != NULL)
            {
                stpcpy(A[c].freq,tok);
                tok = strtok (NULL, " ");
                c++;
            }
            for(c=0;c<numero;c++)
            {
                A[c].exame=1;
                A[c].aulas=strlen(A[c].freq);
                for(cc=0;cc<A[c].aulas;cc++)
                {
                    if(A[c].freq[cc]=='M')
                        scan++;
                }
                for(cc=0;cc<A[c].aulas;cc++)
                {
                    if(A[c].freq[cc]=='P')
                        pres++;
                }
                A[c].aulas-=scan;
                aprov=(100/A[c].aulas)*pres;
                if(aprov<75)
                    A[c].exame=0;
                scan=pres=0;
            }
    
            for(c=0;c<numero;c++)
            {
                if(A[c].exame==0)
                {
                    printf("%s ",A[c].nome);
                }
            }
            qtd--;
            printf("\n");
        }
        return 0;
    }
  • Matheus Leão replied 4 years ago

    P e M são diferentes. Dê uma olhada na descrição do problema.

  • Domitila Crispim Pietropaolo replied 4 years ago

    WA 100%

    #include <stdio.h>
    #include <string.h>
    int main(){
        int j;
        double a, b, f, g, h, c, esp, u, i, o, pre, aus;
        char d[10000], e[10000];
        scanf ("%lf", &a);
    
        for (c=0; c<a; c++){
            scanf ("%lf", &b);
            getchar();
            gets(d);
            i=0;
            o=0;
            esp=0;
            getchar();
        for (h=0; h<b; h++){
            pre=0; 
            aus=0;
    
                scanf ("%s", e);
                for (j=0; j<strlen(e); j++){
                    if (e[j]=='P' || e[j]=='M'){
                        pre++;
                    }
                }
    
                u=pre/strlen(e);
                if (u<0.75){
    
                if (i!=0){
                            printf (" ");
                        }
            if (esp!=h){
                for (j=o; j<strlen(d); j++){
                if (d[j]==' ' ||d[j]=='\n')
                esp++;
                o++;
                    if (esp==h)
                    break;  
                }
            }
                if(esp==h){
                    for (j=o; j<strlen(d); j++){
                        if (d[j]==' ' ||d[j]=='\n'){
                        o=j;
                        esp++;
                        break;}
                        printf ("%c", d[j]); 
                        i++;
                    }
                    o++;
                }
    
            }
    
        }
        puts("");
    } 
    }
  • Matheus Leão replied 4 years ago

    Submeti considerando que ao ler 0, só printo uma linha em branco e já leio o próximo inteiro, e recebi accepted.

  • Michel Melo replied 4 years ago

    Pessoal, o número de estudantes de cada turma pode ser 0. Portanto, a segunda e terceira linha existirá, mas possuirá 0 nomes e 0 registros de presença, respectivamente, correto?

    Acabou acontecendo algo que não entendi.

    Essa entrada, no toolkit:

    4
    2
    Justin Chris
    PAAPP PPPPA
    1
    Sunny
    PPPAM
    4
    Mansi Arjun Nikhil Taneja 
    PPPPMPPAPP AAMAAPP PPPPAAP PPPAAAMPP
    0

    Retorna:

    Justin
    
    Arjun Nikhil Taneja

    Até aí tudo bem, mas essa entrada:

    4
    0
    
    2
    Justin Chris
    PAAPP PPPPA
    1
    Sunny
    PPPAM
    4
    Mansi Arjun Nikhil Taneja 
    PPPPMPPAPP AAMAAPP PPPPAAP PPPAAAMPP

    Retorna:

    Justin
    
    Arjun Nikhil Taneja

    Estou pensando algo errado?

  • Miguel Araújo replied 4 years ago

    Perfeito Cristhian. Obrigado, percebi o erro, corrigi e recebe AC. Obrigado :)

  • Cristhian Bonilha replied 4 years ago

    Tenta esse caso de teste:

    1
    3
    a b c
    A P A
  • Miguel Araújo replied 4 years ago

    Olá, estou recebendo Presentation Error, mas todos os testes que eu gerei batem com a saída desejada. Alguém pode mostrar um caso onde meu código gera PE?

    AC!
  • Unknown replied 4 years ago

    Algum caso de teste em específico que falhe ?

    O erro estava em não estar usando double para efetuar o cálculo.
  • Atilla9 replied 4 years ago

    Estou recebendo Presentation Error, alguem pode me ajudar?

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        string students[101];
        int n;
        cin >> n;
    
        for(int a = 0 ; a < n; a++)
        {
            int s;
            string aux;
            cin >> s;
    
            for(int b = 0; b < s ; b ++)
                cin >> students[b];
    
            for(int b = 0; b < s ; b ++)
            {
                cin >> aux;
                int len = aux.size();
                int cont = 0;
                for(int c = 0; c < aux.size() ; c++)
                {
                    if( aux[c] == 'A')
                        cont++;
                    else if( aux[c] == 'M')
                        len--;
                }
    
                if( 1-(cont/(double)len) < 0.75)
                {
                    if( b != s-1)
                        cout << students[b] << ' ';
                    else
                        cout << students[b];
                }
            }
            cout << endl;
        }
    
    return 0;
    }
  • Igor Carpanese replied 4 years ago

    Poxa, cara, verdade! Tenho que ler o enunciado com mais atenção. Agora foi. Obrigado mesmo!

1 of 3