Skip to content

Instantly share code, notes, and snippets.

@rogerioagjr
Created June 9, 2015 02:35
Show Gist options
  • Save rogerioagjr/f1851f5719150a2a21e0 to your computer and use it in GitHub Desktop.
Save rogerioagjr/f1851f5719150a2a21e0 to your computer and use it in GitHub Desktop.
Caixinha de Palitos
// Caixinha de Palitos - F1P2 - OBI 2015
// Rogério Júnior
// Complexidade: O(m)
#include <cstdio>
#include <algorithm>
using namespace std;
int n, m; // declaro as variáveis "n" e "m"
long long int resp; // declaro resp como long long
int main(){
scanf("%d %d", &n, &m); // leio os valores de "n" e "m"
// para cada uma das possíveis quantidades do primeiro amigo
for(int i=1; i<=m; i++){
int resto=n-i; // vejo quantos palitos ainda sobram
// se for impossível dividí-los entre os dois amigos restantes
// dou continue e não faço mais nada nessa repetição
if(2*m<resto) continue;
// menor será a menor quantidade que o segundo amigo pode ganhar
int menor=max(1, resto-m);
// e maior será a maior quantidade
int maior=min(resto-1, m);
// como a quantidade do terceiro amigo já fica definida
// adiciono a "resp" a quantidade de números no intervalo (menor, maior)
resp+=(maior-menor+1);
}
// e por fim, imprimo o valor de "resp" seguido de quebra de linha
printf("%lld\n", resp);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment