Cod sursa(job #1238414)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 6 octombrie 2014 22:07:27
Problema Plus Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <cstdio>
#include <algorithm>

#define LL long long

using namespace std;

LL Nr[7], Sum[7], Ans, Max1, Max2, Min1, Min2, s;

int main(){
    freopen("plus.in", "r", stdin);
    freopen("plus.out", "w", stdout);
    scanf("%lld %lld %lld %lld %lld %lld %lld", &s, &Nr[1], &Sum[1], &Nr[2], &Sum[2], &Nr[3], &Sum[3]);
    Max1 = max((LL)0, Nr[2] * Sum[2]);
    Max2 = max((LL)0, Nr[3] * Sum[3]);
    Min1 = min((LL)0, Nr[2] * Sum[2]);
    Min2 = min((LL)0, Nr[3] * Sum[3]);
    for(int i = 0; i <= Nr[1]; ++i){
        if(Sum[2]==0){
            if(Sum[3] == 0 && s == 0)
                Ans += (Nr[2] + 1) * (Nr[3] + 1);
            else
                if(Sum[3] != 0)
                    if(s / Sum[3] >= 0 && s / Sum[3] <= Nr[3])
                        Ans += Nr[2] + 1;
        }
        else
            if(Sum[3] == 0){
                if(s / Sum[2] >= 0 && s / Sum[2] <= Nr[2])
                    Ans += Nr[3] + 1;
            }
            else
                if(min(s - Min1, Max2) - max(s - Max1, Min2) + 1 >= 0)
                    Ans += min(s - Min1, Max2) - max(s - Max1, Min2) + 1;
        s -= Sum[1];
    }
    printf("%lld", Ans);
    return 0;
}