Cod sursa(job #1213080)
| Utilizator | Data | 27 iulie 2014 03:34:25 | |
|---|---|---|---|
| Problema | 1-sir | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.68 kb |
#include <cstdio>
using namespace std;
const int MOD = 194767;
int dp[2][32640];
inline int abs(int a){
return (a>0?a:-a);
}
int main(){
freopen("1-sir.in","r",stdin);
freopen("1-sir.out","w",stdout);
int n,S;
scanf("%d %d",&n,&S);
if(S<0) S-=S<<1;
if(S>(n-1)*n/2) printf("0\n");
else{
int SM = (n-1)*n/2;
dp[0][0] = 1;
for(int i=2;i<=n;i++){
for(int j=0;j<=SM;j++){
dp[1][j] = 1LL*(dp[0][j+i-1]+dp[0][abs(j-i+1)])%MOD;
}
for(int j=0;j<=SM;j++){
dp[0][j] = dp[1][j];
}
}
printf("%d\n",dp[0][S]);
}
}
