Pagini recente » Cod sursa (job #1127662) | Cod sursa (job #310252) | Cod sursa (job #3237572) | Cod sursa (job #1406983) | Cod sursa (job #2881060)
#include <iostream>
#include <fstream>
#include <list>
#include <cmath>
using namespace std;
int main()
{
ifstream f("diamant.in");
ofstream g("diamant.out");
int n, m, x;
f >> n >> m >> x;
//44100
int nagyszam = n * (n + 1) / 2 *
m * (m + 1) / 2;
int nagytomb[nagyszam*9];
fill_n(nagytomb, nagyszam*9, 0);
int nagytombMentes[nagyszam * 9];
fill_n(nagytombMentes, nagyszam*9, 0);
// 1+0+0
// 1+2-2
// 1-2+2
// -1+0+2
// -1+2+0
nagytomb[0] = 1;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
copy(nagytomb, nagytomb + nagyszam, nagytombMentes);
for (int k = nagyszam - 1; k > 0; k--)
{
nagytomb[k] = nagytombMentes[(int)abs(k - i*j)] + nagytombMentes[k] + nagytombMentes[k + i*j];
}
// for (int i = 0; i < nagyszam; i++)
// {
// cout << nagytomb[i] << " ";
// }
// cout << endl;
}
}
g << nagytomb[x];
// cout << "|" << nagytomb[x] << "|" << endl;
// for (int i = 0; i < nagyszam; i++)
// {
// cout << nagytomb[i] << " ";
// }
/* list<pair<pair<int, int>, int> > elofordulasok;
list<pair<pair<int, int>, int> > :: iterator it;
list<pair<pair<int, int>, int> > :: iterator it2;
list<pair<pair<int, int>, int> > frontFiller;
list<pair<pair<int, int>, int> > backFiller;
elofordulasok.push_back(make_pair(make_pair(0, 1), 0));
int elem, plusz, minusz;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
elem = i * j;
for (it = elofordulasok.begin(); it != elofordulasok.end(); it++)
{
minusz = it->first.first - elem;
plusz = it->first.first + elem;
if (minusz < elofordulasok.front().first.first)
{
frontFiller.push_back(make_pair(make_pair(minusz, it->first.second), 0));
}
else
{
it2 = it;
advance(it2, elem * -1);
it2->second = 1 + it->first.second - it2->first.second;
}
if (plusz > elofordulasok.back().first.first)
{
backFiller.push_back(make_pair(make_pair(plusz, it->first.second), 0));
}
else
{
it2 = it;
advance(it2, elem);
it2->second = 1 + it->first.second - it2->first.second;
}
}
frontFiller.insert(frontFiller.end(), elofordulasok.begin(), elofordulasok.end());
elofordulasok.clear();
elofordulasok.insert(elofordulasok.begin(), frontFiller.begin(), frontFiller.end());
elofordulasok.insert(elofordulasok.end(), backFiller.begin(), backFiller.end());
frontFiller.clear();
backFiller.clear();
for (it = elofordulasok.begin(); it != elofordulasok.end(); it++)
{
it->first.second += it->second;
it->second = 0;
}
}
}
for (it = elofordulasok.begin(); it != elofordulasok.end(); it++)
{
if (it->first.first == x)
{
g << it->first.second;
break;
}
}*/
return 0;
}