Cod sursa(job #2080285)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 2 decembrie 2017 18:24:26
Problema Plus Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <cstdio>
#include <iostream>

using namespace std;

int main()
{
    FILE *fin=fopen ("plus.in","r");
    FILE *fout=fopen ("plus.out","w");
    long long s,n1,n2,n3,nr1,nr2,nr3,sol,i,st,dr,zero=0;
    fscanf (fin,"%lld%lld%lld%lld%lld%lld%lld",&s,&n1,&nr1,&n2,&nr2,&n3,&nr3);
    sol=0;
    for (i=0;i<=n1;i++){
        s=s-i*nr1;
        if (nr2==0){
            if (nr3==0){
                if (s==0)
                    sol=sol+(n2+1)*(n3+1);
            }
            else if ((nr3==1 && s<=0 && s+n3>=0) || (nr3==-1 && s>=0 && s-n3<=0))
                    sol=sol+(n2+1)*1;
        }
        else if (nr3==0){
            if ((nr2==1 && s<=0 && s+n2>=0) || (nr2==-1 && s>=0 && s-n2<=0))
                    sol=sol+(n3+1)*1;
        }
        else {
            st=(s-n3*nr3)/nr2;
            dr=s/nr2;
            if (st>dr)
                swap(st,dr);
            // max dintre interval si 0
            sol=sol+max ( min(dr,n2)-max(st,zero)+1 , zero);
        }
    }
    fprintf (fout,"%lld",sol);
    return 0;
}