Pagini recente » Cod sursa (job #951826) | Cod sursa (job #2731826) | Cod sursa (job #1306734) | Cod sursa (job #1016704) | Cod sursa (job #270436)
Cod sursa(job #270436)
#include <iostream>
using namespace std;
FILE *f = fopen("plus.in", "r"), *g = fopen("plus.out", "w");
long long S, N1, N2, N3, B1, B2, B3, v[3];
long long numar = 0;
long long min(long long a, long long b)
{
if (a < b)
return a;
return b;
}
int main()
{
v[0] = v[1] = v[2] = 0;
fscanf(f, "%lld\n", &S);
fscanf(f, "%lld %lld", &N1, &B1);
fscanf(f, "%lld %lld", &N2, &B2);
fscanf(f, "%lld %lld", &N3, &B3);
fclose(f);
switch (B1) {
case -1 : v[0] += N1; break;
case 0 : v[1] += N1; break;
case 1 : v[2] += N1; break;
};
switch (B2) {
case -1 : v[0] += N2; break;
case 0 : v[1] += N2; break;
case 1 : v[2] += N2; break;
};
switch (B3) {
case -1 : v[0] += N3; break;
case 0 : v[1] += N3; break;
case 1 : v[2] += N3; break;
};
if (S == 0)
{
numar = 1 + v[1] + min(v[0], v[2]) * (1 + v[1]);
if (v[0] < v[2])
{
numar = 1 + v[1] + v[0] * (1 + v[1]);
}
else
{
numar = 1 + v[1] + v[2] * (1 + v[1]);
}
fprintf(g, "%lld", numar);
fclose(g);
return 0;
}
if (S > 0)
{
if (S > v[2])
{
fprintf(g, "0");
fclose(g);
return 0;
}
int x = 0;
while ((v[2] - x >= S) && (x <= v[0]) && (v[2] - x >= 0))
{
numar = numar + (1 + v[1]);
x++;
}
fprintf(g, "%lld", numar);
fclose(g);
return 0;
}
S = -S;
if (S > v[0])
{
fprintf(g, "0");
fclose(g);
return 0;
}
int x = 0;
while ((v[0] - x >= S) && (x <= v[2]) && (v[0] - x >= 0))
{
numar = numar + (1 + v[1]);
++x;
}
fprintf(g, "%lld", numar);
fclose(g);
return 0;
}