Submission #874374

#TimeUsernameProblemLanguageResultExecution timeMemory
874374IrateA Huge Tower (CEOI10_tower)C++14
45 / 100
947 ms171820 KiB
#include<bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 9;
int n, d;
vector<int>v;
int dp[20][(1 << 20)];
int rec(int indx, int mask){
	int res = 0;
	if(mask == 0)return 1;
	if(dp[indx][mask] != -1)return dp[indx][mask];
	for(int i = 0;i < n;++i){
		if((mask & (1 << i)) && v[indx] + d >= v[i]){
			res += rec(i, mask ^ (1 << i));
			res %= MOD;
		}	
	}
	return dp[indx][mask] = res;
}
int main()
{
    // ios_base::sync_with_stdio(0);
    // cin.tie(0);
    cin >> n >> d;
    v.resize(n);
    for(int i = 0;i < n;++i){
    	cin >> v[i];
    }
    int res = 0;
    for(int i = 0;i < 20;++i){
    	for(int j = 0;j < (1 << 20);++j){
    		dp[i][j] = -1;
    	}
    }
    for(int i = 0;i < n;++i){
    	res += rec(i, ((1 << n) - 1) ^ (1 << i));
    	res %= MOD;
    }
    cout << res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...