Pagini recente » Cod sursa (job #2930299) | Cod sursa (job #1642859) | Cod sursa (job #2525565) | Cod sursa (job #2686248) | Cod sursa (job #768472)
Cod sursa(job #768472)
#include <fstream>
#include <cassert>
using namespace std;
ifstream fin ("diamant.in");
ofstream fout ("diamant.out");
int a[3][100000];
int main()
{
int n,m,i,j,k,nr=0,t,u;
int calitate;
fin>>n>>m>>calitate;
a[0][0]=1;
t=1;
u=1;
for ( i=1;i<=m*n;i++,u++ )
{
if(u==m+1)
{
u=1;
t++;
}
k=1;
for (j=1;j<=a[!(i%2)][0];j++)
{
if (a[!(i%2)][j]-u*t==calitate)
{
nr++;
a[i%2][k++]=a[!(i%2)][j];
a[i%2][k++]=a[!(i%2)][j]+u*t;
}
else
{
if (a[!(i%2)][j]+u*t==calitate)
{
nr++;
a[i%2][k++]=a[!(i%2)][j]-u*t;
a[i%2][k++]=a[!(i%2)][j];
}
else
{
a[i%2][k++]=a[!(i%2)][j]-u*t;
a[i%2][k++]=a[!(i%2)][j];
a[i%2][k++]=a[!(i%2)][j]+u*t;
}
}
/*
if (a[i-1][j]!=calitate)
{
a[i][k++]=a[i-1][j]-u*t;
a[i][k++]=a[i-1][j];
a[i][k++]=a[i-1][j]+u*t;
}
else
{
a[i][k++]=a[i-1][j]-((i/n)+1)*(i%m);
a[i][k++]=a[i-1][j]+((i/n)+1)*(i%m);
nr++;
}
*/
}
a[i%2][0]=k-1;
assert (k<1000000-10);
}
fout<<nr;
return 0;
}