Cod sursa(job #2940067)

Utilizator tmi26Teodor Stupariu tmi26 Data 14 noiembrie 2022 19:10:41
Problema 1-sir Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <fstream>
#include <cstring>

using namespace std;

const long long lon = 256;
const long long MOD = 194767;

long long aux[2][lon*(lon-1)+1], *nr[2];

int main()
{
    ifstream in("1-sir.in");
    ofstream out("1-sir.out");
    long long n, s;
    in >> n >> s;
    in.close();
    if (s > n * (n - 1) / 2 || s < -1*n * (n - 1) / 2)
    {
        out << 0;
        out.close();
        return 0;
    }
    nr[0] = aux[0] + lon * (lon - 1) / 2;
    nr[1] = aux[1] + lon * (lon - 1) / 2;
    nr[0][0] = 1;
    for (long long i = 1; i < n; i++)
    {
        ///actualizez cu obiecte de greutati i si -i
        long long i_c = i % 2;
        long long i_a = 1 - i_c;
        memset(aux[i_c], 0, (lon*(lon-1) + 1) * sizeof(long long));
        ///obiectul i
        for (long long j = s - i; j >= -s; j--)
        {
            nr[i_c][j + i]+= nr[i_a][j];
            nr[i_c][j + i] %= MOD;
        }
        ///obiectul -i
        for (long long j = -s + i; j <= s; j++)
        {
            nr[i_c][j - i] += nr[i_a][j];
            nr[i_c][j - i] %= MOD;
        }
        /*
        for (long long j = -s; j <= s; j++)
        {
            out << nr[i_c][j] << " ";
        }
        out << "\n";
        */
    }
    out << nr[1 - n % 2][s];
    out.close();
    return 0;
}