Cod sursa(job #48849)

Utilizator GabiAlb Gabriel Gabi Data 5 aprilie 2007 09:39:26
Problema Diamant Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
using namespace std;

int a1[65536], a2[65536], b1[65536], b2[65536];
int n, m, x;

#define A(i) (((i)<0)?(a1[-(i)]):(a2[(i)]))
#define B(i) (((i)<0)?(b1[-(i)]):(b2[(i)]))

int main()
{
    ifstream fin("diamant.in");
    ofstream fout("diamant.out");
    
    fin >> n >> m >> x;
    
    int st = -50000;
    int dr = 50000;
    
    if (x > dr) { fout << "0\n"; return 0; }
    
    A(0) = 1;
    
    for (int i = 1; i <= n; i++)
		for (int j = 1; j <= m; j++)
        {
			memcpy(b1,a1,sizeof(a1));
			memcpy(b2,a2,sizeof(b2));
			
			for (int k = dr; k >= st; k--)
            {
				A(k) = B(k-i*j) + B(k) + B(k+i*j);
				A(k) %= 10000;
			}
		}
    fout << A(x) << "\n";

    fout.close();
    fin.close();
    return 0;
}