Pagini recente » Cod sursa (job #2634060) | Cod sursa (job #1390121) | Cod sursa (job #2705283) | Cod sursa (job #3258611) | Cod sursa (job #2630823)
#include <bits/stdc++.h>
#define maxn 1005
std::ifstream fin ("pavare2.in");
std::ofstream fout ("pavare2.out");
long long dp[2][maxn];
int main()
{
int n, maxWhite, maxBlack, i, j, K, crt=0, last=-1;
fin >> n >> maxWhite >> maxBlack;
dp[0][0] = 1;
dp[1][0] = 1;
for (i=1; i<=n; i++){
for (j=1; j<=maxWhite and j<=i; j++)
dp[0][i] += dp[1][i-j];
for (j=1; j<=maxBlack and j<=i; j++)
dp[1][i] += dp[0][i-j];
}
fout << dp[0][n] + dp[1][n] << '\n';
fin >> K;
while (crt < n){
if (last != 0)
for (j=std::min (maxWhite, n-crt); j>=1; j--){
if (K <= dp[1][n-crt-j]){
crt += j;
while (j--)
fout << 0;
last = 0;
break;
}
K -= dp[1][n-crt-j];
}
if (last != 1)
for (j=1; j<=std::min (maxBlack, n-crt); j++){
if (K <= dp[0][n-crt-j]){
crt += j;
while (j--)
fout << 1;
last = 1;
break;
}
K -= dp[0][n-crt-j];
}
}
return 0;
}