Cod sursa(job #2073128)

Utilizator livliviLivia Magureanu livlivi Data 22 noiembrie 2017 18:46:35
Problema 1-sir Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<fstream>
#include<cmath>
#define N 256
#define M 194767
using namespace std;

ifstream cin("1-sir.in");
ofstream cout("1-sir.out");

int dp[N*N+1];

int query(int s,int n){
    if (s>n*(n-1)/2) return 0;
    if (s<0) return 0;
    if (dp[s]!=-1) return dp[s];

    dp[s]=0;
    for(int i=n-1;i>0;i--){
        dp[s]=dp[s]+query(s-i,i)-M;
        if (dp[s]<0) dp[s]+=M;
    }

    return dp[s];
}

int main(){
    int n,s;
    cin>>n>>s;

    s=abs(s);
    s=n*(n-1)/2-s;

    if (s<0 ||(s&1)==1){
        cout<<'0';
        return 0;
    }

    s/=2;
    for(int i=1;i<=s;i++)
        dp[i]=-1;

    dp[0]=1;
    cout<<query(s,n);
    return 0;
}