Pagini recente » Cod sursa (job #2362667) | Cod sursa (job #1136719) | Cod sursa (job #3198744) | Cod sursa (job #1156814) | Cod sursa (job #2090849)
#include <cstdio>
inline int min2(int a, int b){
return a < b ? a : b;
}
inline int max2(int a, int b){
return a > b ? a : b;
}
inline long long nrv(int n, int a, int b, int c, int d){
int aux;
if(b > d){
aux = a; a = c; c = aux;
aux = b; b = d; d = aux;
}
if(b == -1){
if(d == -1){
if(-n > a + c)
return 0;
return max2(0, n + 1 + min2(a, -n) + min2(c, -n));
}
else if(d == 0){
return (c + 1) * (n <= 0 && -n <= a);
}
else{
if(n < 0)
a += n;
else
c -= n;
return max2(0, min2(a, c) + 1);
}
}
else if(b == 0){
if(d == 0)
return 1LL * (a + 1) * (c + 1) * (n == 0);
else
return (a + 1) * (c >= n && n >= 0);
}
else{
if(n > a + c)
return 0;
return max2(0, -n + 1 + min2(a, n) + min2(c, n));
}
}
int main(){
FILE *in = fopen("plus.in", "r");
int n, a, b, c, d, e, f, i;
long long rez = 0;
fscanf(in, "%d%d%d%d%d%d%d", &n, &a, &b, &c, &d, &e, &f);
for(i = 0; i <= a; i++)
rez += nrv(n - i * b, c, d, e, f);
fclose(in);
FILE *out = fopen("plus.out", "w");
fprintf(out, "%lld", rez);
fclose(out);
return 0;
}