Pagini recente » Cod sursa (job #2700995) | Cod sursa (job #2510421) | Cod sursa (job #1745774) | Cod sursa (job #2695336) | Cod sursa (job #3185181)
#include <fstream>
using namespace std;
ifstream cin ("diamant.in");
ofstream cout ("diamant.out");
int temporar[2][1000001] , *modalitati[2] = {temporar[0] + 500000 , temporar[1] + 500000};
const int mod = 10000;
int main ()
{
int linii , coloane , valoare;
cin >> linii >> coloane >> valoare;
if (valoare < -linii * (linii + 1) / 2 * coloane * (coloane + 1) / 2 || linii * (linii + 1) / 2 * coloane * (coloane + 1) / 2 < valoare)
{ cout << '0'; }
else
{
modalitati[0][0] = 1;
for (int linie = 1 , limita = 0 ; linie <= linii ; linie++) {
for (int coloana = 1 ; coloana <= coloane ; coloana++)
{
const int termen = linie * coloana; limita += termen;
for (int suma = -limita ; suma <= limita ; suma++) {
modalitati[1][suma] = modalitati[0][suma];
if ((modalitati[1][suma] += modalitati[0][suma - termen]) >= mod) { modalitati[1][suma] -= mod; }
if ((modalitati[1][suma] += modalitati[0][suma + termen]) >= mod) { modalitati[1][suma] -= mod; }
}
swap(modalitati[0] , modalitati[1]);
}
}
cout << modalitati[0][valoare];
}
cout.close(); cin.close();
return 0;
}