Created
April 19, 2016 10:40
-
-
Save rogerioagjr/89ba946f0c7bc5bd1df2ec43395e8679 to your computer and use it in GitHub Desktop.
Doces de Dia das Bruxas
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <cstdio> | |
#include <cstring> | |
#define MAXN 100100 | |
int c, n, s[MAXN], resto[MAXN]; | |
int main(){ | |
// para cada caso | |
while(scanf("%d %d", &c, &n)and n and c){ | |
// defino todos os valores de resto para -1, ou seja, não encontrados | |
memset(resto, -1, sizeof resto); | |
// caso especial de n=c, e todos os s_i serem distintos | |
resto[0]=0; | |
// leio a entrada e salvo em s | |
for(int i=1; i<=n; i++) scanf("%d", &s[i]); | |
// para cada vizinho | |
for(int i=1; i<=n; i++){ | |
// descubro o valor real de seu s, acumulando o s anterior | |
s[i]+=s[i-1]; | |
// e guardando módulo c | |
s[i]%=c; | |
// se esse resto já foi encontrado no vetor, na posição k | |
if(resto[s[i]]>=0){ | |
// imprimo os índices de k+1 a i | |
// com o cuidado de não imprimir um espaço a mais no final | |
printf("%d", resto[s[i]]+1); | |
for(int j=resto[s[i]]+2; j<=i; j++) printf(" %d", j); | |
printf("\n"); | |
// e paro de percorrer o vetor | |
break; | |
} | |
// caso contrário, guardo o novo resto encontrado | |
resto[s[i]]=i; | |
} | |
} | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment