> For the complete documentation index, see [llms.txt](https://facompetindo.gitbook.io/facompetindo/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://facompetindo.gitbook.io/facompetindo/readme.md).

# Livreto FACOMpetindo

## 🤵 Introdução

A Programação Competitiva pode ser classificada como um esporte da mente que desafia os participantes a resolver problemas algorítmicos de forma correta e eficiente dentro de um tempo limitado. Para isso, é necessário dominar estruturas de dados, algoritmos e técnicas de resolução de problemas, além de desenvolver habilidades como raciocínio lógico, criatividade e trabalho sob pressão.

Além de seu caráter competitivo, a Programação Competitiva é uma excelente ferramenta de aprendizado. A prática constante contribui para o desenvolvimento da capacidade de analisar problemas, projetar soluções eficientes e escrever código de qualidade, habilidades valorizadas tanto na academia quanto no mercado de trabalho.

No Brasil, destacam-se três das principais competições da área:

* A [Olimpíada Brasileira de Informática (OBI)](https://olimpiada.ic.unicamp.br/), destinada a estudantes do ensino fundamental, médio, técnico e aos primeiros anos da graduação;
* A [Maratona SBC de Programação](https://maratona.sbc.org.br/), principal competição universitária do país, disputada por equipes de três integrantes;
* A [Maratona Feminina de Programação (MFP)](https://mfp.ic.unicamp.br/), voltada para mulheres matriculadas em cursos de graduação, com o objetivo de incentivar sua participação na área de Computação.

A Maratona SBC é realizada em equipes de três participantes, estimulando habilidades como colaboração, comunicação e divisão de tarefas durante a resolução dos problemas. Já a OBI e a MFP são competições individuais, nas quais cada participante resolve os desafios de forma independente.

Para quem deseja conhecer melhor o formato da Maratona SBC de Programação, um vídeo introdutório pode ser encontrado [aqui](https://www.youtube.com/watch?v=Q62A6hGhPlE).

Este livreto tem como objetivo servir como um guia introdutório para estudantes interessados em Programação Competitiva. Ao longo dos capítulos serão apresentados algoritmos, estruturas de dados e técnicas fundamentais para a resolução de problemas, oferecendo uma base sólida tanto para quem pretende participar de competições quanto para quem deseja aprimorar suas habilidades em programação.

## 📖 Conteúdo

O conteúdo desse repositório é dividido em duas linguagens: C++ e Python, elas foram escolhidas por serem as mais utilizadas em programação competitiva, e aceitas nas competições nacionais e internacionais.

Cada linguagem possui sua própria divisão com vários artigos que podem ser acessados pelo menu lateral, eles foram pensados para serem lidos em sequência, entretanto caso você seja um leitor mais experiente, pode ler os que chamarem sua atenção primeiro. Ademais, cada linguagem apresenta uma estrutura semelhante de artigos, porém, com alguns artigos a mais ou a menos e exemplos diferentes, seguindo as particularidades de cada linguagem.

Os exercícios são retirados de diversos juizes online, com o foco de treinar a resolução de problemas e praticar o conteúdo apresentado em cada artigo. Os exercícios são separados por dificuldade, e cada artigo apresenta uma lista de exercícios relacionados ao conteúdo abordado.

Caso você queira ver a solução de algum exercício, você pode acessar o nosso [repositório de soluções](https://github.com/FACOMpetindo/programacao-competitiva)

## ❓ Como contribuir

Caso queira contribuir, por favor acesse o nosso [repositório no GitHub](https://github.com/FACOMpetindo/programacao-competitiva) e veja o [guia de contribuição](https://github.com/FACOMpetindo/programacao-competitiva/blob/main/CONTRIBUTING.md).

Alternativamente, caso queira apenas deixar seu feedback sobre o livreto, você pode preencher o seguinte [formulário](https://forms.gle/Sbqiu3wpTyuK3sEb7).

## 🧠 Pré-requisitos

Não é necessário saber ambas Python e C++, os artigos são independentes, então você pode escolher a linguagem que preferir, ou até mesmo ler os dois.

Levando em conta a linguagem escolhida, esse livro assume que você já sabe conceitos bases das linguagens, como:

* Variáveis
* Tipos de dados
* Estruturas de controle
* Estruturas de repetição
* Vetores e listas
* Matrizes e dicionários
* Funções

## 💻 Linguagens

* [C++](/facompetindo/c++.md)
* [Python](/facompetindo/python.md)
