Cod sursa(job #2021425)

Utilizator refugiatBoni Daniel Stefan refugiat Data 13 septembrie 2017 17:55:03
Problema Plus Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream si("plus.in");
ofstream so("plus.out");
int v[5];
long long a[5];

long long sol(int s)
{
    if(v[2]==0&&v[3]==0)
    {
        if(s==0)
            return (a[2]+1)*(a[3]+1);
        else
            return 0;
    }
    else if(v[2] == 0)
    {
        if(s/v[3]>=0&&s/v[3]<=a[3])
            return a[2]+1;
        else
            return 0;
    }
    else if(v[3]==0)
    {
        if (s/v[2]>=0&&s/v[2]<=a[2])
            return a[3]+1;
        else
            return 0;
    }
    else
    {
        long long x,y;
        x=(s-a[3]*v[3])/v[2];
        y=s/v[2];
        if(x>y)
            swap(x,y);
        return max(1LL*0,min(y,a[2])-max(x,1LL*0)+1);
    }
}

int main()
{
    int s;
    si>>s;
    for(int i=1;i<=3;++i)
        si>>a[i]>>v[i];
    long long ans=0;
    for(int i=0;i<=a[1];++i)
    {
        ans+=sol(s-i*v[1]);
    }

    so<<ans<<'\n';
    return 0;
}