UVa 10721 Bar Codes Solution

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n,k,m;
vector<vector<vector<long long int> > > dp(51,vector<vector<long long int> >(51,vector<long long int>(51,-1)));
long long int cc(int x,int y,int z){
    if(x<0||y<=0||z<0)return 0;
    if(x==0&&y==1)return dp[x][y][z]=1;
    if(dp[x][y][z]!=-1)return dp[x][y][z];
    return dp[x][y][z]=cc(x-1,y,z-1)+cc(x-1,y-1,m-1);
}
int main(){
    while(cin>>n>>k>>m){
        for(auto &i:dp)
            for(auto &j:i)
                fill(j.begin(),j.end(),-1);
        cout<<cc(n-1,k,m-1)<<endl;
    }
    return 0;
}

Comments