Cod sursa(job #871516)

Utilizator soriynSorin Rita soriyn Data 4 februarie 2013 21:14:59
Problema Diamant Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <fstream>
#define maxn 100000
#define mij 50000


int vec[maxn];
using namespace std;

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

int sol;
int n,m,s,maxval,maxi,mini,minval;


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

    in>>n>>m>>s;
    vec[mij-1]=1,vec[mij+1]=1,vec[mij+0]=1,maxval=1,minval=-1;
    if(s==-1 || s==1 || s==0) sol++;
    for(int i=1;i<=n;i++)
     for(int j=1;j<=m;j++)
     {
         if(i==1 && j==1) continue;
         for(int k=-50000;k<=50000;k++)
         {
             if(vec[k+mij]==0) continue;



             int x=k+i*j;
             int y=k;
             int z=k-i*j;

            if(abs(x)>50000 || abs(y)>50000 || abs(z)>50000) continue;
              vec[x+mij]++;
              vec[y+mij]++;
              vec[z+mij]++;

             if(i==n && j==m)
             {
                 if(x==s) sol++;
                 if(y==s) sol++;
                 if(z==s) sol++;
                 sol%=10000;
             }
             if(x>maxi) maxi=x;
             if(z<mini) mini=z;

         }

         minval=mini;
         maxval=maxi;
     }

}
int main()
{
    read();
    out<<sol%10000;
    return 0;
}