Cod sursa(job #467196)

Utilizator cosmyoPaunel Cosmin cosmyo Data 28 iunie 2010 12:48:44
Problema Pod Scor 15
Compilator cpp Status done
Runda Stelele Informaticii 2010, clasele X-XII, Ziua 2 Marime 1.05 kb
#include<fstream>
#include<deque>
#include<algorithm>
using namespace std;
long first,last,a,b,nr,x,n,m,k,v[1005];
deque<long> d;
deque<long>::iterator it;
int main()
{ifstream fin("pod.in");
  fin>>n>>m>>k;
  long i;
   for(i=1;i<=m;++i)
	   fin>>v[i];
  fin.close();
 ofstream fout("pod.out");
  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)
		 fout<<1;
	 else
		 fout<<0;
  }
  else
 fout<<d.back()%9901<<'\n';
 fout.close();
 return 0;
}