SlideShare uma empresa Scribd logo
1 de 41
Baixar para ler offline
Maratona de Programação
O que é?
Regras de participação - 2015
http://maratona.ime.usp.br/regras15.html
Fase Brasileira - 2015
● Primeira fase (12 de setembro)
– Acontece em várias regiões do Brasil
– Melhores times de cada sede se classificam
● Segunda fase ou Final brasileira (13 e 14 de novembro)
– Melhores times se classificam para o mundial
– Normalmente vão 6 times brasileiros para o mundial
– Em 2015 será na USP
Competição
● Cada time é composto por 3 pessoas + 1 reserva
● Cada time terá acesso a 1 computador
● Lista de problemas
● Ao resolver um problema, ganha-se um balão
● Só pode levar material impresso (exemplo: livros)
● Os problemas são submetidos através de um sistema
● O sistema indicará se acertou ou não o problema
● Mais informações: http://maratona.ime.usp.br
Motivação
● Aplicar os conhecimentos
● Desenvolver novas técnicas/soluções
● Eficiência na resolução dos problemas
● Trabalho em equipe
● Conhecer pessoas (networking)
● “A maratona de programação diferencia meros
programadores de verdadeiros hackers.”
BOCA
● Sistema utilizado nas competições de programação da
SBC (Sociedade Brasileira de Computação)
BOCA – envio de soluções
BOCA – perguntas aos juízes
BOCA - placar
Mais informações: http://www.ime.usp.br/~cassio/boca/
Tempo
● O sistema faz a contabilização do tempo
● Velocidade ao resolver os problemas
● Se empatar na quantidade de problemas resolvidos?
– Analisa-se o tempo (critério de desempate)
● A cada submissão incorreta de um problema é atribuída
uma penalidade de tempo.
● O time que conseguir resolver o maior número de
problemas (no menor tempo com as penalidades) será
declarado o vencedor.
Tempo - penalidade
● Acumula-se 20 minutos por submissão incorreta
● Exemplo de ranking:
– problemas resolvidos (tempo)
Treinamento
● Competições remotas
● Sites disponíveis para o treinamento:
– https://www.urionlinejudge.com.br
– https://uva.onlinejudge.org
– https://icpcarchive.ecs.baylor.edu
– http://www.spoj.com
Notebook
● Importante um bom material impresso
● Algoritmos implementados
● Fórmulas
● Algoritmos com detalhes “chatos” de implementação
● Não basta apenas copiar, mas sim entender!
● Exemplos de notebook:
– http://bit.ly/1dLOHXc
– http://bit.ly/1N5gwpC
Linguagens de programação
● Linguagens que podem ser utilizadas:
– C
– C++
– Java
● Nos sites como por exemplo o URI:
– C, C++, Java, Python 2, Python 3
● Curso de C++ (> 70 vídeo-aulas):
– http://bit.ly/1FpmD1M
Entrada e saída
● Cada problema tem suas entradas e saídas respectivas
● As entradas e saídas possuem um formato
● Exemplo:
– Entrada: dois números inteiros.
– Saída: imprima SOMA com um espaço em branco
antes e depois do sinal de igual.
Tipos de problemas
● Ad-hoc
● Manipulação de strings
● Estruturas de dados
● Matemática (teoria dos números, geometria ...)
● Paradigmas (programação dinâmica, gulosos …)
● Grafos
● (...)
Problema 1
● Acessem:
– URI – Problema 1037
– Menu Search (Buscar) e digite 1037
– Solução?
Problema 1 - Solução
Códigos
● Os códigos dos problemas estarão no Github:
– https://github.com/marcoscastro/maratona_unifesp/
● Compartilhe suas soluções:
– Basta fazer um fork do projeto (cópia)
– Adicione a sua solução ao projeto (commits e push's)
– Adicione a sua solução ao repositório original através de
um pull request
– Cada problema terá uma pasta
– Nome: código + seunome. Ex.: 1037_marcoscastro.cpp
Códigos
● Dentro da pasta de cada problema poderemos adicionar
referências, algoritmos que ajudem a resolver etc.
Problema 2
● Acessem:
– URI – Problema 1564
– Menu Search (Buscar) e digite 1564
– Solução?
Problema 2 - Discussão
● O problema termina com EOF (end of file)
● Para tratar isso em C/C++ basta fazer:
– while(scanf(“entradas”) != EOF) { … }
Problema 2 - Solução
Problema 2 - Execução
● Salve a entrada em um arquivo
● Execute no terminal (cmd):
– nome_programa < entrada
Problema 3
● Acessem:
– URI – Problema 1557
– Menu Search (Buscar) e digite 1557
– Solução?
– Atenção especial para o formato da saída!
Problema 3 - Discussão
● Problema de fácil entendimento
● O que pode complicar? O formato da saída
● Os valores da matriz devem está formatados em um
campo de tamanho T onde T é igual ao número de dígitos
do maior número da matriz
● Função que retorna a quantidade de dígitos
– enquanto N != 0:
● divida N por 10
● incremente a quantidade de dígitos
Problema 3 - Discussão
● Retorna a quantidade de dígitos
Problema 3 - Discussão
● Mas como saber qual número é o maior?
● O maior número da matriz é o último da diagonal principal
● A diagonal principal é uma PG de razão 4
● Como calcular o último termo de uma PG?
– an = a1 * q ^ (n – 1)
– “^” é o símbolo da exponenciação
– Como a1 é sempre 1, então:
● an = q ^ (n - 1)
Problema 3 - Discussão
● Como calcular a exponenciação em C/C++ ?
● Fácil e rápido:
– int maior = pow(4, N – 1);
– “pow” é uma função da biblioteca math.h
● Para obter o número de digitos do “maior”:
– int T = obter_num_digitos(maior);
Problema 3 - Discussão
● Formatar em um campo de tamanho T:
– printf(“%*d”, T, elemento);
– “T” é a quantidade de dígitos do “maior”
– “elemento” é o elemento da matriz a ser impresso
– Resolve?
● Presentation error!
Problema 3 - Discussão
● Perceba que o problema diz:
– Os valores, além de estarem em um campo de
tamanho T, precisam está separados por um espaço.
– printf(“ %*d”, T, elemento);
– E agora?
● Presentation error!
Problema 3 - Discussão
● O espaço só é para ser colocado entre os valores.
● Para o primeiro número de cada linha:
– printf(“%*d”, T, elemento);
● Para os restantes:
– printf(“ %*d”, T, elemento);
● Não esqueça de deixar uma linha em branco entre cada
impressão de matriz.
Problema 3 - Discussão
● O final da entrada é indicada pelo 0 (zero)
– Se o usuário entrar com 0, sai do loop (break).
● Dica para imprimir os elementos da matriz:
– As linhas/colunas são uma PG de razão 2
Problema 4
● Acessem:
– URI – Problema 1171
– Menu Search (Buscar) e digite 1171
– Solução?
Problema 4 – Discussão
● Máximo de elementos: 2000 (dois mil)
● Declaração de um vetor de inteiros:
– int v[2000];
● Inicialização de todos os elementos com 0:
– memset(v, 0, sizeof(v));
– “memset” é do cabeçalho string.h
Problema 4 - Discussão
● Obtendo os dados:
– scanf(“%d”, &X);
– v[X - 1]++; // incrementa a quantidade
● Após obter os dados:
– Basta imprimir se v[i] != 0
– A ordem de impressão é a ordem crescente
● Accepted!
– Tempo: 0.004 (pode melhorar?)
Problema 5
● Acessem:
– URI – Problema 1397
– Menu Search (Buscar) e digite 1397
– Solução?
Problema 5 - Discussão
● “N” é o número de partidas (rounds)
● 2 jogadores
● Cada jogador diz um número de 0 a 10
● Acumula as vitórias do jogador 1 e 2
● Em caso de empate, não acumula
● Ao final, imprime as pontuações
● O final da entrada é indicado por N = 0
Problema 5 - Solução
Dúvidas?

Mais conteúdo relacionado

Mais procurados

Exercicios praticos-basico-de-internet
Exercicios praticos-basico-de-internetExercicios praticos-basico-de-internet
Exercicios praticos-basico-de-internet
Filgueira Nogueira
 
Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1
Pacc UAB
 
Aprendendo A Usar O Paint
Aprendendo A Usar O PaintAprendendo A Usar O Paint
Aprendendo A Usar O Paint
Cybele Meyer
 
Material aula informática básica
Material aula informática básicaMaterial aula informática básica
Material aula informática básica
Carlos Melo
 
Lista exercicios algoritmos
Lista exercicios algoritmosLista exercicios algoritmos
Lista exercicios algoritmos
slashmelhor
 
O que são virus informáticos
O que são virus informáticosO que são virus informáticos
O que são virus informáticos
mrcelino
 

Mais procurados (20)

Exercicios praticos-basico-de-internet
Exercicios praticos-basico-de-internetExercicios praticos-basico-de-internet
Exercicios praticos-basico-de-internet
 
Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1
 
Aprendendo A Usar O Paint
Aprendendo A Usar O PaintAprendendo A Usar O Paint
Aprendendo A Usar O Paint
 
Material aula informática básica
Material aula informática básicaMaterial aula informática básica
Material aula informática básica
 
3 escalonamento processos
3 escalonamento processos3 escalonamento processos
3 escalonamento processos
 
Exercícios de funções
Exercícios de funçõesExercícios de funções
Exercícios de funções
 
Algoritmos - Formas de Representação de Algoritmos
Algoritmos - Formas de Representação de AlgoritmosAlgoritmos - Formas de Representação de Algoritmos
Algoritmos - Formas de Representação de Algoritmos
 
Internet das coisas (IoT) com Raspberry, Python e Node.js
Internet das coisas (IoT) com Raspberry, Python e Node.jsInternet das coisas (IoT) com Raspberry, Python e Node.js
Internet das coisas (IoT) com Raspberry, Python e Node.js
 
Matemática Básica
Matemática BásicaMatemática Básica
Matemática Básica
 
Lista exercicios algoritmos
Lista exercicios algoritmosLista exercicios algoritmos
Lista exercicios algoritmos
 
Aula básica de informática - Hardware e Software
Aula básica de informática - Hardware e SoftwareAula básica de informática - Hardware e Software
Aula básica de informática - Hardware e Software
 
Técnicas para criação de slides
Técnicas para criação de slides Técnicas para criação de slides
Técnicas para criação de slides
 
Variáveis e portugol
Variáveis e portugolVariáveis e portugol
Variáveis e portugol
 
Algoritmo aula 01-f
Algoritmo   aula 01-fAlgoritmo   aula 01-f
Algoritmo aula 01-f
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Estratégias de pesquisa simples na internet
Estratégias de pesquisa simples na internetEstratégias de pesquisa simples na internet
Estratégias de pesquisa simples na internet
 
Aula I - Word
Aula I - WordAula I - Word
Aula I - Word
 
Algoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetiçãoAlgoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetição
 
Lógica de Programação - Algoritmos
Lógica de Programação - AlgoritmosLógica de Programação - Algoritmos
Lógica de Programação - Algoritmos
 
O que são virus informáticos
O que são virus informáticosO que são virus informáticos
O que são virus informáticos
 

Destaque

A física nos esportes parte 2
A física nos esportes parte 2A física nos esportes parte 2
A física nos esportes parte 2
RicardoDiLucia
 
Regras salto em altura
Regras salto em alturaRegras salto em altura
Regras salto em altura
Paulaeines
 

Destaque (16)

Atletismo
AtletismoAtletismo
Atletismo
 
Arcor Contagem - Jornada mineira
Arcor Contagem - Jornada mineiraArcor Contagem - Jornada mineira
Arcor Contagem - Jornada mineira
 
Maratona aquática - Trabalho SESI
Maratona aquática - Trabalho SESIMaratona aquática - Trabalho SESI
Maratona aquática - Trabalho SESI
 
T3001 Larissa
T3001 LarissaT3001 Larissa
T3001 Larissa
 
Olimpíadas de robótica (regras e modalidades)
Olimpíadas de robótica (regras e modalidades)Olimpíadas de robótica (regras e modalidades)
Olimpíadas de robótica (regras e modalidades)
 
Be Your Own Boss - workshop presentation
Be Your Own Boss - workshop presentationBe Your Own Boss - workshop presentation
Be Your Own Boss - workshop presentation
 
BIOMECANICA APLICADA AO TREINAMENTO E A ED.FISICA
BIOMECANICA APLICADA AO TREINAMENTO E A ED.FISICABIOMECANICA APLICADA AO TREINAMENTO E A ED.FISICA
BIOMECANICA APLICADA AO TREINAMENTO E A ED.FISICA
 
A física nos esportes parte 2
A física nos esportes parte 2A física nos esportes parte 2
A física nos esportes parte 2
 
Atletismo (corrida)
Atletismo (corrida)Atletismo (corrida)
Atletismo (corrida)
 
Atletismo
AtletismoAtletismo
Atletismo
 
Regras salto em altura
Regras salto em alturaRegras salto em altura
Regras salto em altura
 
Atletismo
AtletismoAtletismo
Atletismo
 
Atletismo
AtletismoAtletismo
Atletismo
 
Atletismo
AtletismoAtletismo
Atletismo
 
Atletismo
AtletismoAtletismo
Atletismo
 
Atletismo
AtletismoAtletismo
Atletismo
 

Semelhante a Maratona de Programação

Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2
Robson Ferreira
 
Aula 3 - Algoritmos computacionais - parte 1
Aula 3 - Algoritmos computacionais - parte 1Aula 3 - Algoritmos computacionais - parte 1
Aula 3 - Algoritmos computacionais - parte 1
Pacc UAB
 
E14 s07-t3-algoritmos-2013-04-24 (1)
E14 s07-t3-algoritmos-2013-04-24 (1)E14 s07-t3-algoritmos-2013-04-24 (1)
E14 s07-t3-algoritmos-2013-04-24 (1)
Alex Almeida
 
T02_LM3: Introdução à algoritmia (2013-2014)
T02_LM3: Introdução à algoritmia (2013-2014)T02_LM3: Introdução à algoritmia (2013-2014)
T02_LM3: Introdução à algoritmia (2013-2014)
Carlos Santos
 

Semelhante a Maratona de Programação (20)

4-Introducao programacao-convertido.pptx
4-Introducao programacao-convertido.pptx4-Introducao programacao-convertido.pptx
4-Introducao programacao-convertido.pptx
 
02 while
02 while02 while
02 while
 
03 algoritmos basicos
03 algoritmos basicos03 algoritmos basicos
03 algoritmos basicos
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2
 
Aula 3 - Algoritmos computacionais - parte 1
Aula 3 - Algoritmos computacionais - parte 1Aula 3 - Algoritmos computacionais - parte 1
Aula 3 - Algoritmos computacionais - parte 1
 
Analise Algoritmos
Analise AlgoritmosAnalise Algoritmos
Analise Algoritmos
 
LP1 P01 - Python.pdf
LP1 P01 - Python.pdfLP1 P01 - Python.pdf
LP1 P01 - Python.pdf
 
01 fundamentos de programação
01   fundamentos de programação01   fundamentos de programação
01 fundamentos de programação
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Aula 2 - Lógica de Programação
Aula 2 - Lógica de ProgramaçãoAula 2 - Lógica de Programação
Aula 2 - Lógica de Programação
 
E14 s07-t3-algoritmos-2013-04-24 (1)
E14 s07-t3-algoritmos-2013-04-24 (1)E14 s07-t3-algoritmos-2013-04-24 (1)
E14 s07-t3-algoritmos-2013-04-24 (1)
 
Lógica de programação em ppt
Lógica de programação em pptLógica de programação em ppt
Lógica de programação em ppt
 
Conceito de algoritmo
Conceito de algoritmoConceito de algoritmo
Conceito de algoritmo
 
Apostila digitação
Apostila digitaçãoApostila digitação
Apostila digitação
 
Lógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosLógica de Programação e Algoritmos
Lógica de Programação e Algoritmos
 
Algoritmos - Aula 10 A - Traducao Do Port Est Para Ling C
Algoritmos - Aula 10 A - Traducao Do Port Est Para Ling CAlgoritmos - Aula 10 A - Traducao Do Port Est Para Ling C
Algoritmos - Aula 10 A - Traducao Do Port Est Para Ling C
 
T02_LM3: Introdução à algoritmia (2013-2014)
T02_LM3: Introdução à algoritmia (2013-2014)T02_LM3: Introdução à algoritmia (2013-2014)
T02_LM3: Introdução à algoritmia (2013-2014)
 
Curso de Linguagem C
Curso de Linguagem CCurso de Linguagem C
Curso de Linguagem C
 
Campeonato
CampeonatoCampeonato
Campeonato
 
Aula 3-lógica.pptx
Aula 3-lógica.pptxAula 3-lógica.pptx
Aula 3-lógica.pptx
 

Mais de Marcos Castro

Mais de Marcos Castro (20)

Árvores de Decisão
Árvores de DecisãoÁrvores de Decisão
Árvores de Decisão
 
Colored de Bruijn Graphs
Colored de Bruijn GraphsColored de Bruijn Graphs
Colored de Bruijn Graphs
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de Programação
 
Bioinformática
BioinformáticaBioinformática
Bioinformática
 
Arquivos FASTQ
Arquivos FASTQArquivos FASTQ
Arquivos FASTQ
 
Ferramentas para Bioinformática
Ferramentas para BioinformáticaFerramentas para Bioinformática
Ferramentas para Bioinformática
 
A importância da Bioinformática
A importância da BioinformáticaA importância da Bioinformática
A importância da Bioinformática
 
Bioinformática
BioinformáticaBioinformática
Bioinformática
 
Redes Neurais Artificiais
Redes Neurais ArtificiaisRedes Neurais Artificiais
Redes Neurais Artificiais
 
Problema do Caixeiro Viajante
Problema do Caixeiro ViajanteProblema do Caixeiro Viajante
Problema do Caixeiro Viajante
 
Metaheurística Simulated Annealing
Metaheurística Simulated AnnealingMetaheurística Simulated Annealing
Metaheurística Simulated Annealing
 
Expressões Regulares com Python 3
Expressões Regulares com Python 3Expressões Regulares com Python 3
Expressões Regulares com Python 3
 
Algoritmos gulosos
Algoritmos gulososAlgoritmos gulosos
Algoritmos gulosos
 
Programação dinâmica
Programação dinâmicaProgramação dinâmica
Programação dinâmica
 
Busca em largura - BFS
Busca em largura - BFSBusca em largura - BFS
Busca em largura - BFS
 
Análise Assintótica
Análise AssintóticaAnálise Assintótica
Análise Assintótica
 
Listas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosListas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionários
 
Python - Set
Python - SetPython - Set
Python - Set
 
Python - Dicionários
Python - DicionáriosPython - Dicionários
Python - Dicionários
 
Tabela Hash
Tabela HashTabela Hash
Tabela Hash
 

Último

QUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geralQUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geral
AntonioVieira539017
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
TailsonSantos1
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
azulassessoria9
 

Último (20)

E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.ppt
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptx
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .ppt
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
 
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
 
QUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geralQUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geral
 
Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptxCópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
 
Aula prática JOGO-Regencia-Verbal-e-Nominal.pdf
Aula prática JOGO-Regencia-Verbal-e-Nominal.pdfAula prática JOGO-Regencia-Verbal-e-Nominal.pdf
Aula prática JOGO-Regencia-Verbal-e-Nominal.pdf
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretação
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 

Maratona de Programação

  • 3. Regras de participação - 2015 http://maratona.ime.usp.br/regras15.html
  • 4. Fase Brasileira - 2015 ● Primeira fase (12 de setembro) – Acontece em várias regiões do Brasil – Melhores times de cada sede se classificam ● Segunda fase ou Final brasileira (13 e 14 de novembro) – Melhores times se classificam para o mundial – Normalmente vão 6 times brasileiros para o mundial – Em 2015 será na USP
  • 5. Competição ● Cada time é composto por 3 pessoas + 1 reserva ● Cada time terá acesso a 1 computador ● Lista de problemas ● Ao resolver um problema, ganha-se um balão ● Só pode levar material impresso (exemplo: livros) ● Os problemas são submetidos através de um sistema ● O sistema indicará se acertou ou não o problema ● Mais informações: http://maratona.ime.usp.br
  • 6. Motivação ● Aplicar os conhecimentos ● Desenvolver novas técnicas/soluções ● Eficiência na resolução dos problemas ● Trabalho em equipe ● Conhecer pessoas (networking) ● “A maratona de programação diferencia meros programadores de verdadeiros hackers.”
  • 7. BOCA ● Sistema utilizado nas competições de programação da SBC (Sociedade Brasileira de Computação)
  • 8. BOCA – envio de soluções
  • 9. BOCA – perguntas aos juízes
  • 10. BOCA - placar Mais informações: http://www.ime.usp.br/~cassio/boca/
  • 11. Tempo ● O sistema faz a contabilização do tempo ● Velocidade ao resolver os problemas ● Se empatar na quantidade de problemas resolvidos? – Analisa-se o tempo (critério de desempate) ● A cada submissão incorreta de um problema é atribuída uma penalidade de tempo. ● O time que conseguir resolver o maior número de problemas (no menor tempo com as penalidades) será declarado o vencedor.
  • 12. Tempo - penalidade ● Acumula-se 20 minutos por submissão incorreta ● Exemplo de ranking: – problemas resolvidos (tempo)
  • 13. Treinamento ● Competições remotas ● Sites disponíveis para o treinamento: – https://www.urionlinejudge.com.br – https://uva.onlinejudge.org – https://icpcarchive.ecs.baylor.edu – http://www.spoj.com
  • 14. Notebook ● Importante um bom material impresso ● Algoritmos implementados ● Fórmulas ● Algoritmos com detalhes “chatos” de implementação ● Não basta apenas copiar, mas sim entender! ● Exemplos de notebook: – http://bit.ly/1dLOHXc – http://bit.ly/1N5gwpC
  • 15. Linguagens de programação ● Linguagens que podem ser utilizadas: – C – C++ – Java ● Nos sites como por exemplo o URI: – C, C++, Java, Python 2, Python 3 ● Curso de C++ (> 70 vídeo-aulas): – http://bit.ly/1FpmD1M
  • 16. Entrada e saída ● Cada problema tem suas entradas e saídas respectivas ● As entradas e saídas possuem um formato ● Exemplo: – Entrada: dois números inteiros. – Saída: imprima SOMA com um espaço em branco antes e depois do sinal de igual.
  • 17. Tipos de problemas ● Ad-hoc ● Manipulação de strings ● Estruturas de dados ● Matemática (teoria dos números, geometria ...) ● Paradigmas (programação dinâmica, gulosos …) ● Grafos ● (...)
  • 18. Problema 1 ● Acessem: – URI – Problema 1037 – Menu Search (Buscar) e digite 1037 – Solução?
  • 19. Problema 1 - Solução
  • 20. Códigos ● Os códigos dos problemas estarão no Github: – https://github.com/marcoscastro/maratona_unifesp/ ● Compartilhe suas soluções: – Basta fazer um fork do projeto (cópia) – Adicione a sua solução ao projeto (commits e push's) – Adicione a sua solução ao repositório original através de um pull request – Cada problema terá uma pasta – Nome: código + seunome. Ex.: 1037_marcoscastro.cpp
  • 21. Códigos ● Dentro da pasta de cada problema poderemos adicionar referências, algoritmos que ajudem a resolver etc.
  • 22. Problema 2 ● Acessem: – URI – Problema 1564 – Menu Search (Buscar) e digite 1564 – Solução?
  • 23. Problema 2 - Discussão ● O problema termina com EOF (end of file) ● Para tratar isso em C/C++ basta fazer: – while(scanf(“entradas”) != EOF) { … }
  • 24. Problema 2 - Solução
  • 25. Problema 2 - Execução ● Salve a entrada em um arquivo ● Execute no terminal (cmd): – nome_programa < entrada
  • 26. Problema 3 ● Acessem: – URI – Problema 1557 – Menu Search (Buscar) e digite 1557 – Solução? – Atenção especial para o formato da saída!
  • 27. Problema 3 - Discussão ● Problema de fácil entendimento ● O que pode complicar? O formato da saída ● Os valores da matriz devem está formatados em um campo de tamanho T onde T é igual ao número de dígitos do maior número da matriz ● Função que retorna a quantidade de dígitos – enquanto N != 0: ● divida N por 10 ● incremente a quantidade de dígitos
  • 28. Problema 3 - Discussão ● Retorna a quantidade de dígitos
  • 29. Problema 3 - Discussão ● Mas como saber qual número é o maior? ● O maior número da matriz é o último da diagonal principal ● A diagonal principal é uma PG de razão 4 ● Como calcular o último termo de uma PG? – an = a1 * q ^ (n – 1) – “^” é o símbolo da exponenciação – Como a1 é sempre 1, então: ● an = q ^ (n - 1)
  • 30. Problema 3 - Discussão ● Como calcular a exponenciação em C/C++ ? ● Fácil e rápido: – int maior = pow(4, N – 1); – “pow” é uma função da biblioteca math.h ● Para obter o número de digitos do “maior”: – int T = obter_num_digitos(maior);
  • 31. Problema 3 - Discussão ● Formatar em um campo de tamanho T: – printf(“%*d”, T, elemento); – “T” é a quantidade de dígitos do “maior” – “elemento” é o elemento da matriz a ser impresso – Resolve? ● Presentation error!
  • 32. Problema 3 - Discussão ● Perceba que o problema diz: – Os valores, além de estarem em um campo de tamanho T, precisam está separados por um espaço. – printf(“ %*d”, T, elemento); – E agora? ● Presentation error!
  • 33. Problema 3 - Discussão ● O espaço só é para ser colocado entre os valores. ● Para o primeiro número de cada linha: – printf(“%*d”, T, elemento); ● Para os restantes: – printf(“ %*d”, T, elemento); ● Não esqueça de deixar uma linha em branco entre cada impressão de matriz.
  • 34. Problema 3 - Discussão ● O final da entrada é indicada pelo 0 (zero) – Se o usuário entrar com 0, sai do loop (break). ● Dica para imprimir os elementos da matriz: – As linhas/colunas são uma PG de razão 2
  • 35. Problema 4 ● Acessem: – URI – Problema 1171 – Menu Search (Buscar) e digite 1171 – Solução?
  • 36. Problema 4 – Discussão ● Máximo de elementos: 2000 (dois mil) ● Declaração de um vetor de inteiros: – int v[2000]; ● Inicialização de todos os elementos com 0: – memset(v, 0, sizeof(v)); – “memset” é do cabeçalho string.h
  • 37. Problema 4 - Discussão ● Obtendo os dados: – scanf(“%d”, &X); – v[X - 1]++; // incrementa a quantidade ● Após obter os dados: – Basta imprimir se v[i] != 0 – A ordem de impressão é a ordem crescente ● Accepted! – Tempo: 0.004 (pode melhorar?)
  • 38. Problema 5 ● Acessem: – URI – Problema 1397 – Menu Search (Buscar) e digite 1397 – Solução?
  • 39. Problema 5 - Discussão ● “N” é o número de partidas (rounds) ● 2 jogadores ● Cada jogador diz um número de 0 a 10 ● Acumula as vitórias do jogador 1 e 2 ● Em caso de empate, não acumula ● Ao final, imprime as pontuações ● O final da entrada é indicado por N = 0
  • 40. Problema 5 - Solução