TOPIC

PROBLEM 1262 - 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.

  • mleao1 replied 9 years ago

    É bem simples: cada operação de gravação (W) tem que ser executada em separado, mas até P (P = número de processos) gravaçoes de leitura (R) podem ser executadas simultaneamente computando um único ciclo. Então se p = 2, RW são dois ciclos, e RRW também são dois ciclos, porque os dois Rs seguidos contam como um único ciclo.

    Por exemplo, no caso RWWRRR, p = 3, temos 4 ciclos: R W W RRR (até p=3 leituras podem ser agrupadas juntas)

  • voliveira4 replied 8 years ago

    Alguém pode me explicar porque no 3º exemplo que o URI fornece: RRRRRRRRRR 4. A resposta é 3?

    Porque no meu entendimento a string ficaria dividida assim:

    • RRRR - 1 ciclo
    • RRRR - 1 ciclo
    • R - 1 ciclo
    • R - 1 ciclo

    Resultando em 4 ciclos.

    Grato desde já.

  • jadsonjjmo replied 8 years ago

    RRRRRRRRRR

    • RRRR = 1 ciclo
    • RRRR = 1 ciclo
    • RR = 1 ciclo
  • rfabiam replied 9 years ago

    Pessoal, Para fazer com que ele pare com EOF, eu coloquei esse codigo em Java:

    InputStreamReader ir = new InputStreamReader(System.in);
    BufferedReader in = new BufferedReader(ir);
    String texto;
    while ((texto = in.readLine()) != null) {
       //codigo
    }

    Isso esta correto?

  • mleao1 replied 9 years ago

    Deve funcionar :)

  • aluiz1 replied 9 years ago

    Ahh entendi. Muito obrigado Matheus =).

  • aluiz1 replied 9 years ago

    Não entendi bem a lógica do problema. Alguém poderia facilitar aqui?

  • jroberto0 replied 9 years ago

    Nossaaaa!!!! Era só isso mesmo que estava faltando!!! Muito obrigado Matheus!

  • mleao1 replied 9 years ago

    Jonatas Roberto, você tem que colocar algum critério de parada, se não o seu código fica em loop infinito. Por exemplo, modificar a linha cin >> s para:

    if (cin >> s)
        //leitura deu certo
    else
        break;
  • jroberto0 replied 9 years ago

    Resolvido

    Não entendi porque usando ponteiro deu TLE não deveria ser mais rápido com ponteiros? alguem pode dá um help?

  • crbonilha replied on Aug 22 2013

    ??? Eu te ajudo sempre que posso, e não sou o único...

    Esse trecho do seu código acessa campos que não deveria:

    for(j=0;j<=i;j++) {
    if(proc[j]=='R' && proc[j+1]=='W')...

    Note que i é o tamanho da string. Você pode acessar as posições de 0 até i-1. O seu j corre até i (o que já ultrapassa o limite), e seu if compara a posição j+1 (ultrapassou em 2 o limite).

    O que acha de experimentar outra abordagem? Acho que é mais simples do que a qual você está implementando. Cada W ocupa um ciclo, e você pode usar até P R's sequenciais. Uma busca já pode resolver.

    Experimente esses casos:

    RRW
    2
    RRW
    1
    WRR
    2
    WRR
    1
  • Joe101 replied on Aug 22 2013

    ...

  • Joe101 replied on Aug 22 2013

    ..

  • crbonilha replied on Aug 22 2013

    Em que exatamente você está tendo dificuldades? Você entendeu a lógica do exercício? Você só pode executar um R por vez, mas pode executar P W's de uma vez.

  • Joe101 replied on Aug 22 2013

    ALGUÉM PODERIA ME DAR UMA AJUDA EM COMO RESOLVER ESSE PROBLEMA PQ TUDO QUE FAÇO RECEBO WRONG ANSWER OBRIGADO