Pagini recente » Rezultatele filtrării | Cod sursa (job #1793124) | Diferente pentru problema/editor intre reviziile 70 si 31 | Diferente pentru utilizator/andreii1 intre reviziile 10 si 64 | Cod sursa (job #2037337)
// 15 pct
#include <bits/stdc++.h>
#define Nmax 1000001
#define Mmax 1001
#define Kmax 20
#define MOD 9901
using namespace std;
ifstream f("pod.in");
ofstream g("pod.out");
int v[Kmax+1];
int good[Mmax];
int main()
{
int n,m,i,k,x;
f>>n>>m>>k;
for(i=1;i<=m;i++)
f>>good[i];
sort(good+1,good+m+1);
bool ok=false;
int poz=1;
for(i=1;i<k;i++)
if(i==good[poz])
{
++poz;
ok=true;
}
else if(!ok) v[i]=1;
v[k]=v[k-1]+1;
for(i=k+1;i<=n;i++)
if(i==good[poz])
++poz;
else
v[i%Kmax]=(v[(i-1)%Kmax]+v[(i-k)%Kmax])%MOD;
g<<v[n%20];
return 0;
}