{"id":161,"date":"2017-03-16T09:49:41","date_gmt":"2017-03-16T12:49:41","guid":{"rendered":"http:\/\/www.galirows.com.br\/meublog\/competir\/?p=161"},"modified":"2021-07-28T08:58:13","modified_gmt":"2021-07-28T11:58:13","slug":"alarme-despertador-maratona2009","status":"publish","type":"post","link":"http:\/\/www.galirows.com.br\/meublog\/competir\/alarme-despertador-maratona2009\/","title":{"rendered":"Alarme Despertador [Maratona 2009]"},"content":{"rendered":"\n<p>Daniela \u00e9 enfermeira em um grande hospital, e tem os hor\u00e1rios de trabalho muito vari\u00e1veis. Para piorar, ela tem sono pesado, e uma grande dificuldade para acordar com rel\u00f3gios despertadores.<\/p>\n\n\n\n<p>Recentemente ela ganhou de presente um rel\u00f3gio digital, com alarme com v\u00e1rios tons, e tem esperan\u00e7a que isso resolva o seu problema. No entanto, ela anda muito cansada e quer aproveitar cada momento de descanso. Por isso, carrega seu rel\u00f3gio digital despertador para todos os lugares, e sempre que tem um tempo de descanso procura dormir, programando o alarme despertador para a hora em que tem que acordar. No entanto, com tanta ansiedade para dormir, acaba tendo dificuldades para adormecer e aproveitar o descanso.<\/p>\n\n\n\n<p>Um problema que a tem atormentado na hora de dormir \u00e9 saber quantos minutos ela teria de sono se adormecesse imediatamente e acordasse somente quando o despertador tocasse. Mas ela realmente n\u00e3o \u00e9 muito boa com n\u00fameros, e pediu sua ajuda para escrever um programa que, dada a hora corrente e a hora do alarme, determine o n\u00famero de minutos que ela poderia dormir.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p><strong>Entrada<\/strong><\/p>\n\n\n\n<p>A entrada cont\u00e9m v\u00e1rios casos de teste. Cada caso de teste \u00e9 descrito em uma linha, contendo quatro n\u00fameros inteiros H1, M1, H2 e M2, com H1:M1 representando a hora e minuto atuais, e H2:M2 representando a hora e minuto para os quais o alarme despertador foi programado (0\u2264H1\u226423, 0\u2264M1\u226459, 0\u2264H2\u226423, 0\u2264M2 \u226459).<\/p>\n\n\n\n<p>O final da entrada \u00e9 indicado por uma linha que cont\u00e9m apenas quatro zeros, separados por espa\u00e7os em branco.<\/p>\n\n\n\n<p><strong>Sa\u00edda<\/strong><\/p>\n\n\n\n<p>Para cada caso de teste da entrada seu programa deve imprimir uma linha, cada uma contendo um n\u00famero inteiro, indicando o n\u00famero de minutos que Daniela tem para dormir.<\/p>\n\n\n\n<p>O resultado de seu programa deve ser escrito na sa\u00edda padr\u00e3o.<\/p>\n\n\n\n<p><strong>Exemplo<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td>Entrada<\/td><td>Sa\u00edda<\/td><\/tr><\/thead><tbody><tr><td>1 5 3 5<br>23 59 0 34<br>21 33 21 10<br>0 0 0 0<\/td><td>120<br>35<br>1417<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Dica<\/strong><\/p>\n\n\n\n<p>O primeiro passo consiste em transformar cada hora em minutos e contabilizar os minutos totais. Se o momento atual (primeiro hor\u00e1rio) for menor do que o programado (segundo hor\u00e1rio), a resposta ser\u00e1 a diferen\u00e7a entre o programado e o atual. Caso contr\u00e1rio, al\u00e9m da diferen\u00e7a anterior, ser\u00e1 necess\u00e1rio adicionar a quantidade de minutos do 1 dia (24*60 = 1440).<\/p>\n\n\n\n<p><strong>Solu\u00e7\u00e3o em C\/C++<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code lang:c decode:true\"><code lang=\"c\" class=\"language-c\">#include &lt;stdio.h&gt;\n\nint main () {\n    int h1, h2, m1, m2, t1, t2;\n \n    while (1) { \/\/repete infinitamente\n    \tscanf (\"%i %i %i %i\", &amp;h1, &amp;m1, &amp;h2, &amp;m2);\n    \t\n    \tif (h1==0 &amp;&amp; h2==0 &amp;&amp; m1==0 &amp;&amp; m2==0) { \n    \t\tbreak; \/\/para o while caso valores zero sejam fornecidos na entrada\n    \t}\n        \n        t1 = (h1 * 60) + m1;\n        t2 = (h2 * 60) + m2;\n         \n        if (t1 &lt; t2) {\n        \tprintf (\"%i\\n\", t2-t1);\n        } else {\n        \tprintf (\"%i\\n\", 1440+(t2-t1)); \/\/24*60 = 1440\n        }\n    }\n \n    return 0;\n}<\/code><\/pre>\n\n\n\n<p><strong>Teste o c\u00f3digo:<\/strong> <a href=\"http:\/\/ideone.com\/9dVEYd\" target=\"_blank\" rel=\"noopener\">http:\/\/ideone.com\/9dVEYd<\/a><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Alarme Despertador [Maratona de Programa\u00e7\u00e3o 2009]\" width=\"627\" height=\"353\" src=\"https:\/\/www.youtube.com\/embed\/YreAwQKUhnU?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p><strong>Solu\u00e7\u00e3o em Python<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code lang:python decode:true\"><code lang=\"python\" class=\"language-python\">while True:\n    #leitura dos 4 valores\n    h1 = int(input())\n    m1 = int(input())\n    h2 = int(input())\n    m2 = int(input())\n    \n    #testa condi\u00e7\u00e3o de parada\n    if h1==0 and h2==0 and m1==0 and m2==0:\n        break\n    \n    t1 = (h1 * 60) + m1;\n    t2 = (h2 * 60) + m2;\n         \n    if t1 &lt; t2:\n        print t2-t1\n    else:\n        print 1440+(t2-t1) #24*60 = 1440<\/code><\/pre>\n\n\n\n<p><strong>Teste o c\u00f3digo:<\/strong> <a rel=\"noopener\" href=\"http:\/\/www.codeskulptor.org\/#user42_yY9aclqqC3_0.py\" target=\"_blank\">http:\/\/www.codeskulptor.org\/#user42_yY9aclqqC3_0.py<\/a><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Alarme Despertador [Maratona de Programa\u00e7\u00e3o 2009]\" width=\"627\" height=\"353\" src=\"https:\/\/www.youtube.com\/embed\/dWIrB0jG7Uc?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>Embora o algoritmo na fun\u00e7\u00e3o main() seja funcional para as linguagens de programa\u00e7\u00e3o C e C++, segue abaixo a codifica\u00e7\u00e3o espec\u00edfica para a linguagem C++ (a solu\u00e7\u00e3o foi inspirada a partir do coment\u00e1rio feito por Luis Henrique Veiga Amarante).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">#include &lt;iostream>\n\nusing namespace std;\n\nint main()\n{\n    int hora_dormir, minuto_dormir, hora_acordar, minuto_acordar, acorda_caraio, mi, ho;\n\n    \/* mi \u2013 representa os minutos de sono\n    ho \u2013 representa as horas de sono*\/\n\n    while (1) {\n        cin >> hora_dormir;\n        cin >> minuto_dormir;\n        cin >> hora_acordar;\n        cin >> minuto_acordar;\n\n        if (hora_acordar ==00 &amp;&amp; hora_dormir ==0 &amp;&amp; minuto_acordar ==00 &amp;&amp; minuto_dormir ==00)     {\n            return 0;\n        }\n\n        ho = (hora_dormir * 60) + minuto_dormir;\n        mi = (hora_acordar * 60) + minuto_acordar;\n\n        if ( ho &lt; mi) {\n            cout &lt;&lt; mi - ho &lt;&lt; endl;\n        } else {\n            cout &lt;&lt; 1440 + (mi - ho) &lt;&lt; endl;\n        }\n    }\n    return 0;\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Daniela \u00e9 enfermeira em um grande hospital, e tem os hor\u00e1rios de trabalho muito vari\u00e1veis. Para piorar, ela tem sono pesado, e uma grande dificuldade para acordar com rel\u00f3gios despertadores. Recentemente ela ganhou de presente um rel\u00f3gio digital, com alarme com v\u00e1rios tons, e tem esperan\u00e7a que isso resolva o seu problema. No entanto, ela [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,7,5],"tags":[],"class_list":["post-161","post","type-post","status-publish","format-standard","hentry","category-cc","category-maratona-de-programacao","category-python"],"aioseo_notices":[],"amp_enabled":true,"_links":{"self":[{"href":"http:\/\/www.galirows.com.br\/meublog\/competir\/wp-json\/wp\/v2\/posts\/161","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.galirows.com.br\/meublog\/competir\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.galirows.com.br\/meublog\/competir\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/competir\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/competir\/wp-json\/wp\/v2\/comments?post=161"}],"version-history":[{"count":10,"href":"http:\/\/www.galirows.com.br\/meublog\/competir\/wp-json\/wp\/v2\/posts\/161\/revisions"}],"predecessor-version":[{"id":403,"href":"http:\/\/www.galirows.com.br\/meublog\/competir\/wp-json\/wp\/v2\/posts\/161\/revisions\/403"}],"wp:attachment":[{"href":"http:\/\/www.galirows.com.br\/meublog\/competir\/wp-json\/wp\/v2\/media?parent=161"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/competir\/wp-json\/wp\/v2\/categories?post=161"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/competir\/wp-json\/wp\/v2\/tags?post=161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}