Pagini recente » Cod sursa (job #2693296) | Monitorul de evaluare | Profil andrici_cezar | Cod sursa (job #2770628) | Cod sursa (job #3186757)
#include <fstream>
using namespace std;
ifstream cin ("1-sir.in");
ofstream cout ("1-sir.out");
const int mod = 194767;
int modalitati[2][32641];
int main ()
{
int lungime , suma;
cin >> lungime >> suma;
if (!(-((lungime * (lungime - 1)) >> 1) <= suma && suma <= ((lungime * (lungime - 1)) >> 1)))
{ cout << '0'; }
else
{
modalitati[0][0] = 1;
for (int lungime_actuala = 2 ; lungime_actuala <= lungime ; lungime_actuala++)
{
for (int suma = 0 ; suma <= 32640 ; suma++)
{
modalitati[1][suma] = 0;
modalitati[1][suma] += modalitati[0][lungime_actuala - 1 <= suma ? suma - lungime_actuala + 1 : -(suma - lungime_actuala + 1)];
modalitati[1][suma] += modalitati[0][suma + lungime_actuala - 1];
if (modalitati[1][suma] >= mod)
{ modalitati[1][suma] -= mod; }
}
swap(modalitati[0] , modalitati[1]);
}
cout << modalitati[0][(suma < 0 ? -suma : suma)];
}
cout.close(); cin.close();
return 0;
}