Pagini recente » Cod sursa (job #1121982) | Cod sursa (job #981898) | Cod sursa (job #1514991) | Cod sursa (job #47136) | Cod sursa (job #2292772)
#include <bits/stdc++.h>
using namespace std;
int n,s,SDP[260][2],DP[260][2],C[260][2];
int main(){
cin>>n>>s;
DP[0][0]=DP[0][1]=SDP[0][0]=SDP[0][1]=0;
C[0][0]=C[0][1]=1;
for(int i=1;i<n;i++){
int ind;
if(abs(s-(SDP[i-1][0]+DP[i-1][0]-1))<abs(s-(SDP[i-1][1]+DP[i-1][1]-1)))ind=0;
else if(abs(s-(SDP[i-1][0]+DP[i-1][0]-1))>abs(s-(SDP[i-1][1]+DP[i-1][1]-1)))ind=1;
else ind=2;
DP[i][1]=DP[i-1][(bool)ind]-1;
SDP[i][1]=SDP[i-1][(bool)ind]+DP[i][1];
if(ind==2 && i>1){
C[i][1]=C[i-1][0]+C[i-1][1];
}else C[i][1]=C[i-1][(bool)ind];
if(abs(s-(SDP[i-1][0]+DP[i-1][0]+1))<abs(s-(SDP[i-1][1]+DP[i-1][1]+1)))ind=0;
else if(abs(s-(SDP[i-1][0]+DP[i-1][0]+1))>abs(s-(SDP[i-1][1]+DP[i-1][1]+1)))ind=1;
else ind=2;
DP[i][0]=DP[i-1][(bool)ind]+1;
SDP[i][0]=SDP[i-1][(bool)ind]+DP[i][0];
if(ind==2 && i>1){
C[i][0]=C[i-1][0]+C[i-1][1];
}else C[i][0]=C[i-1][(bool)ind];
}
/*cout<<"DP:\n";
for(int i=0;i<n;i++){
cout<<DP[i][0]<<' ';
}
cout<<'\n';
for(int i=0;i<n;i++){
cout<<DP[i][1]<<' ';
}
cout<<"\nC:\n";
for(int i=0;i<n;i++){
cout<<C[i][0]<<' ';
}
cout<<'\n';
for(int i=0;i<n;i++){
cout<<C[i][1]<<' ';
}
cout<<"\nSDP:\n";
for(int i=0;i<n;i++){
cout<<SDP[i][0]<<' ';
}
cout<<'\n';
for(int i=0;i<n;i++){
cout<<SDP[i][1]<<' ';
}
cout<<'\n';
cout<<'\n';*/
if(SDP[n-1][0]==s)cout<<C[n-1][0]<<'\n';
else if(SDP[n-1][1]==s) cout<<C[n-1][1]<<'\n';
return 0;
}