Submission #755985

# Submission time Handle Problem Language Result Execution time Memory
755985 2023-06-10T19:13:19 Z vjudge1 A Huge Tower (CEOI10_tower) C++17
45 / 100
1000 ms 262144 KB
#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
using namespace std;
using namespace __gnu_pbds;

typedef long long ll;
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> indexed_set;
const ll MOD = 1e9 + 9;
ll mod(ll x, ll m = MOD){return (x + m) % m;}

typedef vector<int> vi;
typedef vector<ll> vll;
typedef pair<ll,ll> pll;

typedef vector<pair<int,int>> vpi;

#define pb push_back

#define ff first
#define ss second
#define all(x) (x).begin(),(x).end()

const int nax = 504;
const int bnax = 20;
int n, d;
vi A;
ll dp[bnax][(1 << bnax)];
int pos[(1 << bnax)];
int go[bnax];
int LSOne(int val)
{
    return pos[val & (- val)] ;
}
ll f(int i, int mask)
{
    if(dp[i][mask] != -1)
        return dp[i][mask];
    if(mask == (1 << n) - 1)
        return dp[i][mask] = 1ll;
    ll ans = 0ll;
    int rem = (((1 << n) - 1) - mask) & go[i];
    for(int j = LSOne(rem); rem > 0; j = LSOne(rem))
    {
        ans = mod(ans + f(j, mask + (1 << j)));
        rem -= (1 << j);
    }
    return dp[i][mask] = ans;
}
void solve()
{
    memset(dp, -1, sizeof(dp));
    cin >> n >> d;
    A.resize(n);
    for(int i = 0; i < n; i++)
        cin >> A[i];
    ll ans = 0ll;
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < n; j++)
        {
            if(A[j] <= A[i] + d)
                go[i] += (1 << j);
        }
    }
    for(int i = 0; i < n; i++)
    {
        ans = mod(ans + f(i, (1 << i)));
    }
    cout << ans;
}
int32_t main()
{
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    int tt = 1; //cin >> tt;
    for(int i = 0; i < 20 ;i++)
        pos[(1 << i)] = i;
    while(tt--)
        solve();

}
# Verdict Execution time Memory Grader output
1 Correct 64 ms 164428 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 63 ms 164496 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 66 ms 164408 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 63 ms 164556 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 76 ms 164508 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 198 ms 164508 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 869 ms 164556 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 77 ms 164444 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 119 ms 164572 KB Output is correct
# Verdict Execution time Memory Grader output
1 Runtime error 249 ms 262144 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 232 ms 262144 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 243 ms 262144 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 223 ms 262144 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 226 ms 262144 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 233 ms 262144 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 249 ms 262144 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 470 ms 262144 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1078 ms 164844 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1079 ms 165420 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1079 ms 166860 KB Time limit exceeded
2 Halted 0 ms 0 KB -