Nu aveti permisiuni pentru a descarca fisierul grader_test4.in
Cod sursa(job #3186756)
| Utilizator | Data | 25 decembrie 2023 08:01:14 | |
|---|---|---|---|
| Problema | 1-sir | Scor | 60 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 1.22 kb |
#include <fstream>
using namespace std;
ifstream cin ("1-sir.in");
ofstream cout ("1-sir.out");
const int mod = 194767;
int modalitati[257][65281];
int Modalitati (const int lungime , const int suma)
{
if (modalitati[lungime][suma + 32640] != -1)
{ return modalitati[lungime][suma + 32640]; }
if (!(-((lungime * (lungime - 1)) >> 1) <= suma && suma <= ((lungime * (lungime - 1)) >> 1)))
{ return (modalitati[lungime][suma + 32640] = 0); }
modalitati[lungime][suma + 32640] = Modalitati(lungime - 1 , suma - lungime + 1) + Modalitati(lungime - 1 , suma + lungime - 1);
if (modalitati[lungime][suma + 32640] >= mod) { modalitati[lungime][suma + 32640] -= mod; }
return modalitati[lungime][suma + 32640];
}
int main ()
{
int lungime , suma;
cin >> lungime >> suma;
for (int _lungime = 1 ; _lungime <= lungime ; _lungime++) {
for (int indice = 32640 - ((lungime * (lungime - 1)) >> 1) , limita = 32640 + ((lungime * (lungime - 1)) >> 1) ; indice <= limita ; indice++) {
modalitati[_lungime][indice] = -1;
}
}
modalitati[1][32640] = 1;
cout << Modalitati(lungime , suma);
cout.close(); cin.close();
return 0;
}