Pagini recente » Cod sursa (job #1876406) | Cod sursa (job #2355001) | Cod sursa (job #1124753) | Cod sursa (job #2989456) | Cod sursa (job #119596)
Cod sursa(job #119596)
#include <stdio.h>
#define LL long long
int S;
int nr[5], s[5];
int nr0[5];
int a, sa, b, sb, e;
inline int MAX(int a, int b) { return (a > b) ? a : b; }
inline int MIN(int a, int b) { return (a < b) ? a : b; }
int nr_aleg(int S)
{
if (!e) {
if (S == 0) return 1;
if (S < 0 && sa < 0 && S <= a) return 1;
if (S > 0 && sa > 0 && S <= a) return 1;
return 0;
}
if (sa > 0 && sb > 0) {
if (S == 0) return 1;
if (S < 0) return 0;
return MAX( MIN(S, a) - MAX(S - b, 0) + 1, 0 );
}
if (sa < 0 && sb < 0) {
if (S == 0) return 1;
if (S > 0) return 0;
return MAX( MIN(S, a) - MAX(S - b, 0) + 1, 0 );
}
return MAX( MIN(a, S + b) - MAX(0, S) + 1, 0 );
}
int main()
{
int i;
freopen("plus.in", "r", stdin);
freopen("plus.out", "w", stdout);
scanf("%d", &S);
for (i = 1; i <= 3; i++) {
scanf("%d %d", &nr[i], &s[i]);
if (!s[i]) nr0[i] = nr[i];
}
for (i = 1; i <= 3; i++)
if (s[i] == 1) break;
if (i == 4) {
printf("0\n");
return 0;
}
int q = nr[i];
s[i] = 0;
e = 0;
for (i = 1; i <= 3; i++)
if (s[i] != 0) {
if (!e) a = nr[i], sa = s[i], e = 1;
else b = nr[i], sb = s[i];
}
if (!sb) e = 0;
LL rez = 0;
for (i = 0; i <= q; i++)
rez += (LL) nr_aleg(S - i) * (nr0[1] + 1) * (nr0[2] + 1) * (nr0[3] + 1);
printf("%lld\n", rez);
return 0;
}