Cod sursa(job #3358154)
| Utilizator | Data | 14 iunie 2026 22:28:35 | |
|---|---|---|---|
| Problema | Pod | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.56 kb |
#include <fstream>
#include <set>
#include <cassert>
using namespace std;
ifstream in("pod.in");
ofstream out("pod.out");
const int MMAX=1e3+5, NMAX=1e6+5, MOD=9901;
int n, m, k, dp[NMAX];
set<int> brk;
int main()
{
in>>n>>m>>k;
assert(k!=1);
if(k==1)
{
out<<((m==0)?1:0);
return 0;
}
for(int i=1;i<=m;i++)
{
int x; in>>x;
brk.insert(x);
}
dp[0]=1;
for(int i=1;i<=n;i++)
{
dp[i]=dp[i-1]+dp[i-k];
if(brk.find(i)!=brk.end())
dp[i]=0;
}
out<<dp[n];
return 0;
}