Cod sursa(job #467211)

Utilizator cosmyoPaunel Cosmin cosmyo Data 28 iunie 2010 13:00:42
Problema Pod Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2010, clasele X-XII, Ziua 2 Marime 1.1 kb
#include<cstdio>
#include<deque>
#include<algorithm>
using namespace std;
long first,last,a,b,nr,x,n,m,k,v[1005];
deque<int> d;
deque<int>::iterator it;
int main()
{freopen("pod.in","r",stdin);
  scantf("%ld%ld%ld",&n,&m,&k);
  long i;
   for(i=1;i<=m;++i)
	   scanf("%ld",&v[i]);
 freopen("pod.out","w",stdout);
  sort(v+1,v+m+1);
long  p=1;
  if(m==0)
	{  v[0]=-1;
      p=0;
	}
  if(1==v[p])
	  {++p;
	   d.push_back(0);
	  }
  else
	  d.push_back(1);
  for(i=2;i<=k-1;++i)
    if(v[p]==i)
	 {last=d.back();
	  d.push_back(last);
	  ++p;
	 }
	else
	{last=d.back();
	 d.push_back(last);
    }
	last=0;
  last=d.back();	
  if(v[p]==k)
    {++p;
	 d.push_back(last);
	}
 else  
	 d.push_back(last+1);
  for(i=k+1;i<=n;++i)
	 {if(v[p]==i)
	  {d.push_back(0);
	   d.pop_front();
	   ++p;
	  }
	  else
	  {last=d.back();
	   first=d.front();
	   d.push_back((first+last)%9901);
	   d.pop_front();
	  }
	 }
 if(k==1)
  {	 if(m==0)
		 printf("1\n");
	 else
		 printf("0\n");
  }
  else
 printf("%ld\n",d.back());
 fclose(stdin);
 fclose(stdout);
 return 0;
}