# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
528166 | hoainiem | Skyscraper (JOI16_skyscraper) | C++14 | 58 ms | 16048 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
const int mod = 1e9+7;
double begintime, endtime;
using namespace std;
inline void CALC_TIME()
{
endtime = clock();
cout<<"\nexecution time : "<<(endtime-begintime+1)/1000<<" s";
}
void add(int &x, int y)
{
x += y;
if(x >= mod)x -= mod;
}
int n, l, nect, ans = 0, tmp, a[108], f[108][108][1008][3];
int dq(int i, int j, int k, int x)
{
if(k < 0 || k > l)return 0;
if(f[i][j][k][x] != -1)return f[i][j][k][x];
if(i == n)
{
if(j == 1 && k == l && x == 2)return f[i][j][k][x] = 1;
return f[i][j][k][x] = 0;
}
int res = 0, tmp = a[i+2]-a[i+1];
add(res, 1LL*dq(i+1, j+1, k+tmp*(j*2+2-x), x)*(j+1-x)%mod);
if(x < 2)
add(res, 1LL*dq(i+1, j+1, k+tmp*(j*2+1-x), x+1)*(2-x)%mod);
add(res, 1LL*dq(i+1, j, k+tmp*(j*2-x), x)*(j*2-x)%mod);
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |