Cod sursa(job #873029)

Utilizator soriynSorin Rita soriyn Data 6 februarie 2013 20:25:49
Problema Diamant Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>
#include <queue>
#include <cstdlib>
#define maxn 100020
#define mij 50000
#define mod 10000

int vec[maxn],aux[maxn];
using namespace std;

ifstream in("diamant.in");
ofstream out("diamant.out");

queue<int> q;
int sol;
int n,m,s,maxval,maxi,mini,minval,sol2;


int abs(int x)
{
    if(x<0) return -x;
    return x;
}
void read()
{

    in>>n>>m>>s;
    if(s>50000){out<<"0";exit(0);}
    vec[mij]=1;
    int maxi=0,mini=0;
    for(int i=1;i<=n;i++)
     for(int j=1;j<=m;j++)
     {

         for(int t=mini;t<=maxi;t++)
         {

             if(vec[mij+t]==0) continue;
             int x=t+i*j;
             int y=t;
             int z=t-i*j;


               aux[mij+x]=(aux[mij+x]%mod+vec[mij+t]%mod)%mod;
               aux[mij+y]=(aux[mij+y]%mod+vec[mij+t]%mod)%mod;
               aux[mij+z]=(aux[mij+z]%mod+vec[mij+t]%mod)%mod;


         }
         for(int p=0;p<maxn;p++) vec[p]=aux[p],aux[p]=0;
         mini-=i*j,maxi+=i*j;

     }

}
int main()
{
    read();
    out<<vec[s+mij]%mod;
    return 0;
}