Documente Academic
Documente Profesional
Documente Cultură
Campus de Quixad
1. Suponha que voc tenha um ve tor de n inteiros representando os preos das aes em um nico dia. Ns
queremos encontrar um par (DiaCompra, DiaVenda), com DiaCompra DiaV enda, de modo que se ns
compramos o estoque de aes no DiaCompra e o vendemos no DiaVenda, maximizaramos nosso lucro. Clara-
mente, h uma soluo O(n2 ) para o algoritmo, testando todos os pares possveis (DiaCompra, DiaV enda) e
encontrando o melhor de todos eles.
Dica:
O par (DiaCompra, DiaV enda) correto ocorre completamente na primeira metade do vetor.
O par (DiaCompra, DiaV enda) correto ocorre completamente na segunda metade do vetor.
O par (DiaCompra, DiaV enda) correto ocorre em ambas as metades - compramos no primeira metade e
depois vendemos no segunda metade.
Por exemplo, considerando o vetor de preos de aes [5,10,4,6,7], o par (0,1) dar o maior lucro, cujo valor 5.
Considerando o vetor de preos de aes [5,10,4,6,12], o par (2,4) dar o maior lucro, cujo valor 8.
Fonte: https://www.thehuxley.com/problem/410
Discusso: https://sites.google.com/site/ldsicufal/disciplinas/programacao-avancada/a-melhor-compra-de-
2. Um intervalo binrio dentro de um inteiro positivo N qualquer seqncia mxima de zeros consecutivos que
est rodeada por um em ambas as extremidades na representao binria de N. Por exemplo, o nmero 9 tem
representao binria 1001 e contm um intervalo binrio de comprimento 2. O nmero 529 tem representao
binria 1000010001 e contm dois espaos binrios: um do comprimento 4 e um do comprimento 3. O nmero
20 tem a representao binria 10100 e contm um intervalo binrio de comprimento 1. O nmero 15 tem
representao binria 1111 e no possui espaos binrios.
Escreva uma funo: int solution (int N); que, dado um nmero inteiro positivo N, retorna o comprimento de
seu intervalo binrio mais longo. A funo deve retornar 0 se N no contiver um intervalor binria. Por exemplo,
dado N = 1041, a funo deve retornar 5, porque N possui uma representao binria 10000010001 e, portanto,
o intervalo binrio mais longo de comprimento 5.
Complexidade:
Fonte: https://codility.com/programmers/lessons/1-iterations/binary_gap/
1
3. Uma pequeno sapo quer chegar ao outro lado da estrada. O sapo est atualmente localizado na posio X e quer
chegar a uma posio maior ou igual a Y. O pequeno sapo sempre salta uma distncia fixa, D. Contar o nmero
mnimo de saltos que o sapo pequeno deve executar para atingir seu alvo.
Escreva uma funo: int soluo (int X, int Y, int D); que, dado trs inteiros X, Y e D, retorna o nmero mnimo
de saltos da posio X para uma posio igual ou maior do que Y.
Por exemplo, dado: X = 10, Y = 85 e D = 30, a funo deve retornar 3, porque o sapo ser posicionado da
seguinte maneira:
Aps o primeiro salto, na posio 10 + 30 = 40; aps o segundo salto, na posio 10 + 30 + 30 = 70; aps o
terceiro salto, na posio 10 + 30 + 30 + 30 = 100
Complexidade:
Fonte: https://codility.com/programmers/lessons/3-time_complexity/frog_jmp/
4. Voc recebe N contadores, inicialmente configurado para 0, e voc possui duas operaes possveis sobre eles:
contador mximo - todos os contadores so definidos para o valor mximo de qualquer contador.
Um vetor A no-vazio indexado por zero de M inteiros fornecida. Este vetor representa operaes consecutivas:
(0, 0, 1, 0, 0)
(0, 0, 1, 1, 0)
(0, 0, 1, 2, 0)
(2, 2, 2, 2, 2)
(3, 2, 2, 2, 2)
(3, 2, 2, 3, 2)
(3, 2, 2, 4, 2)
O objetivo calcular o valor de cada contador aps todas as operaes. A funo deve retornar [3, 2, 2, 4, 2],
como explicado acima.
Complexidade:
2
A complexidade de espao do pior caso esperada O(N ).
Fonte: https://codility.com/programmers/lessons/4-counting_elements/max_counters/