Cod sursa(job #639220)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 22 noiembrie 2011 20:09:09
Problema Minesweeper Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<fstream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
using namespace std;

inline double Rezolva(int n)
{
	int pas,val,nr;
	short v[25];
	double sol=0.0;
	memset(v,0,sizeof(v));
	srand(time(0));
	for(pas=1;pas<=100000;pas++)
	{
		nr=n;	//trebuie sa obtin n semne de intrebare
		while(nr)	//cat timp mai sunt semne de intrebare de obtinut
		{
			val=rand()%n;	//generez o pozitie aleatoare pe care voi apasa
			if(v[val]==1)	nr--; //o noua celula devine semn de intrebare
			if(v[val]==2)	nr++; //o celula ce era semn de intrebare se reseteaza
			v[val]++;
			if(v[val]==3)	v[val]=0;
			sol++;
		}
		memset(v,0,sizeof(v));
	}
	pas--;
	sol=sol/pas;
	return sol;
}

int main()
{
	int n,m;
	double sol;
	freopen("minesweeper.in","r",stdin);
	scanf("%d %d",&n,&m);
	sol=Rezolva(n*m);
	freopen("minesweeper.out","w",stdout);
	printf("%.6lf\n",sol);
	return 0;
}