#include #define K_MAX 50000 int N, K; // hodnoty N a K ze vstupu int zacatky[K_MAX]; // nejmenší možné indexy i s daným součtem s modulo K int a, soucet = 0; // pomocné proměnné - načtení vstupu a mezisoučet int nej_zacatek = 0; // dosud nejlepší nalezené řešení int nej_delka = 0; int main(void) { scanf("%d%d", &N, &K); zacatky[0] = 1; for (int i = 1; i <= N; i++) { scanf("%d", &a); soucet = (soucet + a) % K; if (zacatky[soucet]) { if (i - zacatky[soucet] + 1 > nej_delka) { nej_zacatek = zacatky[soucet]; nej_delka = i - nej_zacatek + 1; } } else zacatky[soucet] = i+1; } if (nej_delka) printf("%d %d\n", nej_zacatek, nej_zacatek + nej_delka - 1); else printf("Nelze zaklínat.\n"); return 0; }