{"id":19,"date":"2017-10-05T13:38:18","date_gmt":"2017-10-05T16:38:18","guid":{"rendered":"http:\/\/www.professores.uff.br\/dartigas\/?page_id=19"},"modified":"2017-10-05T13:38:18","modified_gmt":"2017-10-05T16:38:18","slug":"iniciando-no-uri-e-no-uva","status":"publish","type":"page","link":"https:\/\/www.professores.uff.br\/dartigas\/iniciando-no-uri-e-no-uva\/","title":{"rendered":"Iniciando no URI e no UVA"},"content":{"rendered":"<p><em>No UVa:<\/em><\/p>\n<ol>\n<li style=\"list-style-type: none\">\n<ol>\n<li>Crie um conta em <a href=\"http:\/\/uva.onlinejudge.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/uva.onlinejudge.org\/<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li>Em Browse Problem voc\u00ea ter\u00e1 acesso a todos os problemas do site. Utilizarei o problema\u00a0<a href=\"http:\/\/uva.onlinejudge.org\/index.php?option=com_onlinejudge&amp;Itemid=8&amp;category=24&amp;page=show_problem&amp;problem=36\" target=\"_blank\" rel=\"noopener noreferrer\">100 &#8211; The 3n + 1 problem<\/a> como exemplo.<\/li>\n<li>O UVa utiliza entrada e sa\u00edda padr\u00e3o. Devemos utililizar scanf\/cin para leitura e printf\/cout para imprimir a sa\u00edda.<\/li>\n<li>Observe que a entrada consiste em um conjunto de casos de testes, portanto \u00e9 necess\u00e1rio utilizar uma estrutura de repeti\u00e7\u00e3o para considerar os diversos casos de teste. No <a href=\"http:\/\/www.meusiteantigo.uff.br\/dartigas\/iniciando.html#code\">c\u00f3digo<\/a> para o problema 3n + 1 essa estrutura est\u00e1 na linha 21,\u00a0 while(scanf(&#8220;%ld %ld&#8221;, &amp;i, &amp;j)==2). A fun\u00e7\u00e3o scanf retorna o n\u00famero de argumentos lidos com sucesso, no exemplo em quest\u00e3o, os casos de teste s\u00e3o constitu\u00eddos de 2 inteiros que s\u00e3o lidos por scanf, quando alcan\u00e7armos o final do arquivo, representado por EOF, scanf n\u00e3o mais retornar\u00e1 2 o que encerrar\u00e1 o loop.<\/li>\n<li>\u00c9 fundamental que a resposta esteja EXATAMENTE no formato indicado pelo problema. O UVa verifica se uma resposta est\u00e1 correta comparando o arquivo de resposta que ele possui com o que foi gerado pelo programa enviado. Portanto, pular linhas a mais ou n\u00e3o pular, bem como errar o n\u00famero de espa\u00e7os em branco ou utilizar letras min\u00fasculas ao inv\u00e9s de mai\u00fasculas recebem wrong answer ou presentation error como resposta.<\/li>\n<li>Uma vez finalizado o c\u00f3digo \u00e9 importante test\u00e1-lo! Para isso \u00e9 preciso verificar alguns casos de teste. Existem duas formas principais de inserir os casos de teste, uma \u00e9 digitando e a outra \u00e9 passando o arquivo de entrada, para isso copie e cole os casos de teste do problema em um editor de texto e salve o arquivo. Para o 3n + 1 salvarei os casos de teste num arquivo denominado 3n1.in. Seja 3n1 o nome do programa que foi criado. Para passar o arquivo de teste utilize o seguinte comando no terminal #.\/3n1 &lt; 3n1.in.<\/li>\n<li>Pronto! Se at\u00e9 agora tudo saiu bem, voc\u00ea possu\u00ed um c\u00f3digo e este est\u00e1 funcionando para os casos de teste apresentados, Chegou a hora de submeter a solu\u00e7\u00e3o ao UVa. Existem diversas formas de fazer essa submiss\u00e3o, as duas principais s\u00e3o: na p\u00e1gina de descri\u00e7\u00e3o do problema clique em <em>Submit<\/em>, ent\u00e3o escolha a linguagem e fa\u00e7a download do arquivo ou copie e cole o c\u00f3digo para a p\u00e1gina de submiss\u00e3o, agora \u00e9 s\u00f3 enviar; a outra forma \u00e9 clicar em <em>Quick Submit, <\/em>digitar o n\u00famero do problema e prosseguir com a submiss\u00e3o como no caso anterior. Para acompanhar suas submiss\u00f5es v\u00e1 em <em>My Submissions<\/em>.<\/li>\n<li>Uma boa dica \u00e9 acessar a p\u00e1gina <a href=\"http:\/\/uhunt.felix-halim.net\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/uhunt.felix-halim.net\/<\/a> l\u00e1 voc\u00ea poder\u00e1 acompanhar sua evolu\u00e7\u00e3o no UVa, encontrar sugest\u00f5es de exerc\u00edcios e muito mais.<\/li>\n<li>Abaixo est\u00e1 o c\u00f3digo em C para resolver o problema 3n + 1.<\/li>\n<\/ol>\n<p><a id=\"code\" name=\"code\"><\/a>C\u00f3digo em C para problema 100:<\/p>\n<div>\n<pre>  1 #include&lt;stdio.h&gt; \r\n  2 #include&lt;stdlib.h&gt; \r\n  3  \r\n  4 long int cycle(long int x){ \r\n  5     long int cont;\r\n  6      \r\n  7     cont=1; \r\n  8     while(x!=1){ \r\n  9         cont++; \r\n 10         if(x % 2 ==1) \r\n 11             x=3*x+1; \r\n 12         else \r\n 13             x=x\/2;     \r\n 14     } \r\n 15 return cont; \r\n 16 } \r\n 17  \r\n 18 int main(void){ \r\n 19     long int i,j,k,tam, ini, fim;\r\n 20  \r\n 21     while(scanf(\"%ld %ld\", &amp;i, &amp;j)==2){ \r\n 22         if(i&lt;=j){ \r\n 23             ini=i; \r\n 24             fim=j; \r\n 25         } \r\n 26         else{ \r\n 27             ini=j; \r\n 28             fim=i; \r\n 29         } \r\n 30         tam=0; \r\n 31         for(k=ini; k&lt;=fim; k++){ \r\n 32             if(cycle(k)&gt;tam) \r\n 33                 tam=cycle(k); \r\n 34         }         \r\n 35         printf(\"%ld %ld %ld\\n\", i, j, tam); \r\n 36     } \r\n 37 return 0;\r\n 38 }<\/pre>\n<\/div>\n<hr \/>\n<p>No URI:<\/p>\n<p>Para os problemas no site <a href=\"https:\/\/www.urionlinejudge.com.br\/judge\/login\">URI<\/a> o procedimento de elabora\u00e7\u00e3o\u00a0 do c\u00f3digo, teste e submiss\u00e3o dos mesmos \u00e9 id\u00eantico ao do UVa. A diferen\u00e7a fundamental entre eles \u00e9 que o URI s\u00f3 aceita submiss\u00f5es em C++ ou java. Para \u00e0queles que preferem utilizar C, basta submeter como C++ e, caso envie o arquivo, ao inv\u00e9s de .c salve como .cpp. tamb\u00e9m \u00e9 importante lembrar que o compilador padr\u00e3o (no linux) para C++ \u00e9 o g++ e n\u00e3o o gcc. Al\u00e9m disso, toda resposta do URI deve terminar com \/n ou endl.<\/p>\n<p>Para maiores detalhes sobre submiss\u00e3o no URI, consulte <a href=\"http:\/\/www.urionlinejudge.com.br\/judge\/pt\/help\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.urionlinejudge.com.br\/judge\/pt\/help<\/a><\/p>\n<p>O site do UVa possui uma maior base de dados de problemas e, integrado com o uhunt e com o Comepetitive Programming, \u00e9 uma grande ferramenta de estudo e a principal forma de prepara\u00e7\u00e3o para a Maratona de Programa\u00e7\u00e3o.<\/p>\n<p>O URI possui um n\u00famero reduzido de problemas, mas al\u00e9m de estar em portugu\u00eas, ele possui \u00f3timas ferramentas de ensino e uma boa classifica\u00e7\u00e3o de problemas quanto aos t\u00f3picos e n\u00edveis de dificuldade e interface mais amig\u00e1vel. Logo \u00e9 excelente para iniciantes e ser\u00e1 o site utilizado em nossos cursos introdut\u00f3rios.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>No UVa: Crie um conta em http:\/\/uva.onlinejudge.org\/ &nbsp; Em Browse Problem voc\u00ea ter\u00e1 acesso a todos os problemas do site. Utilizarei o problema\u00a0100 &#8211; The 3n + 1 problem como exemplo. O UVa utiliza entrada e sa\u00edda padr\u00e3o. Devemos utililizar scanf\/cin para leitura e printf\/cout para imprimir a sa\u00edda. Observe que a entrada consiste em [&hellip;]<\/p>\n","protected":false},"author":22,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[],"tags":[],"class_list":["post-19","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.professores.uff.br\/dartigas\/wp-json\/wp\/v2\/pages\/19","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.professores.uff.br\/dartigas\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.professores.uff.br\/dartigas\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.professores.uff.br\/dartigas\/wp-json\/wp\/v2\/users\/22"}],"replies":[{"embeddable":true,"href":"https:\/\/www.professores.uff.br\/dartigas\/wp-json\/wp\/v2\/comments?post=19"}],"version-history":[{"count":1,"href":"https:\/\/www.professores.uff.br\/dartigas\/wp-json\/wp\/v2\/pages\/19\/revisions"}],"predecessor-version":[{"id":20,"href":"https:\/\/www.professores.uff.br\/dartigas\/wp-json\/wp\/v2\/pages\/19\/revisions\/20"}],"wp:attachment":[{"href":"https:\/\/www.professores.uff.br\/dartigas\/wp-json\/wp\/v2\/media?parent=19"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.professores.uff.br\/dartigas\/wp-json\/wp\/v2\/categories?post=19"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.professores.uff.br\/dartigas\/wp-json\/wp\/v2\/tags?post=19"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}