Cod sursa(job #2629938)

Utilizator Teod12ALEXANDRESCU teodora Teod12 Data 23 iunie 2020 13:24:20
Problema Diamant Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>
using namespace std;
int a[2][100001];
int inv(int val)
{
    if(val<0)
        return 45000-val;
    return val;
}
int main()
{
    ifstream fin("diamant.in");
    ofstream fout("diamant.out");
    int n,m,x,y,s=0,t,sum;
    fin>>n>>m>>x;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            s+=i*j;
    if(x>s || x<-s)
        fout<<0;
    else{
        t=1;
        a[0][0]=1;
        sum=0;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++){
                sum+=i*j;
                int val=s-sum;
                int mi=max(x-val,-sum);
                int ma=min(x+val,sum);
                for (int q=mi;q<=ma;q++){
                    y=inv(q);
                    a[t][y]=a[1-t][y];
                    if(q-i*j>=-s)
                        a[t][y]=(a[t][y]+a[1-t][inv(q-i*j)])%10000;
                    if(q+i*j<=s)
                        a[t][y]=(a[t][y]+a[1-t][inv(q+i*j)])%10000;
                }
                t=1-t;
            }
        fout<<a[1-t][inv(x)];
    }
    return 0;
}