Pagini recente » Cod sursa (job #2167738) | Cod sursa (job #2111961) | Cod sursa (job #1555369) | Cod sursa (job #2461588) | Cod sursa (job #475490)
Cod sursa(job #475490)
#include <iostream>
#include <deque>
#include <vector>
#include <algorithm>
using namespace std;
const int MOD = 9901;
deque<int> lastK;
vector<int> a;
int N, M, K, pozitieCurenta = 0, sumaLastK = 0;
int x1 = 0, x2 = 1;
FILE *f = fopen("pod.in", "r");
FILE *g = fopen("pod.out", "w");
deque<int>::iterator it;
int main()
{
fscanf(f, "%d %d %d", &N, &M, &K);
for (int i = 0; i < M; ++i)
{
int x;
fscanf(f, "%d", &x);
a.push_back(x);
}
sort(a.begin(), a.end());
for (int i = 1; i < K; ++i)
{
if ((a[pozitieCurenta] == i) || x1)
{
lastK.push_back(0);
if (a[pozitieCurenta] == i) pozitieCurenta++;
x1 = 1;
}
else
{
lastK.push_back(1);
}
}
if (a[pozitieCurenta] == K)
{
if (lastK.back())
{
lastK.push_back(1);
}
else
{
lastK.push_back(0);
}
pozitieCurenta++;
}
else
{
if (lastK.back())
{
lastK.push_back(2);
}
else
{
lastK.push_back(1);
}
}
for (int i = K + 1; i <= N; ++i)
{
if (a[pozitieCurenta] == i)
{
lastK.push_back(0);
pozitieCurenta++;
lastK.pop_front();
}
else
{
lastK.push_back((lastK.front() + lastK.back()) % MOD);
lastK.pop_front();
}
}
fprintf(g, "%d", lastK.back());
fclose(f);
fclose(f);
return 0;
}