Cod sursa(job #2601939)

Utilizator alex_benescuAlex Ben alex_benescu Data 15 aprilie 2020 15:40:27
Problema Expresii 2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
using namespace std;
ifstream f("expresii2.in");
ofstream g("expresii2.out");
int n,m,i,j,k,p,y,s[35];
long long x,sol,c[35][35][35];
int main(){
f>>n>>m>>x;
c[0][1][0]=1;
for(i=0;i<n;++i)
for(j=0;j<=n;++j)
for(k=0;k<m+3;++k)
if(c[i][j][k])
{
if(j<n-i) c[i+1][j][m+2]+=c[i][j][k];
if(j>1||(j==1&&i==n-1)) for(p=0;p<m;++p) c[i+1][j-1][p]+=c[i][j][k];
if(j<n-i-1)
{
c[i+1][j+1][m]+=c[i][j][k];
c[i+1][j+1][m+1]+=c[i][j][k];
}
}
for(j=0;j<m+2;++j)sol+=c[n][0][j];
for(i=n;i;--i)
for(j=0;j<m+3;++j)
if(c[i][y][j]<x)x-=c[i][y][j];
else{
s[n-i+1]=j;
if(j<m)y++;
else y-=(j<m+2);
j=m+3;
}
g<<sol<<'\n';
for(i=1;i<=n;++i)
if(s[i]<m) g<<char('A'+s[i]);
else if(s[i]==m) g<<'+';
else g<<(s[i]==m+1?'*':'!');
return 0;
}