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>
#include "towers.h"
using namespace std;
const int N=1e5;
int n,k,spe=-1;
vector<int>a;
void init(int N,vector<int>h){
n=N;
a=h;
bool ok=true;
for(int i=0;i<N;i++){
if((i==0||(i>0&&h[i-1]<h[i]))&&(i==n-1||(i<n-1&&h[i]>h[i+1]))){
spe=i;
for(int j=0;j<spe;j++){
if(h[j]>h[j+1]){
ok=false;
}
}
for(int i=spe+1;i<N;i++){
if(h[i-1]<h[i]){
ok=false;
}
}
if(ok==false){
spe=-1;
}
break;
}
}
}
int max_towers(int l,int r,int d){
if(spe>-1){
if(l==r){
return 1;
}
if(l<k&&k<r&&a[l]+d<=a[k]&&a[r]+d<=a[k]){
return 2;
}
else{
return 1;
}
}
int dp[n+5];
dp[l]=1;
for(int i=l+1;i<=r;i++){
dp[i]=1;
for(int j=i+2;i<=r;j++){
for(int k=i+1;k<j;k++){
if(a[i]+d<=a[k]&&a[j]+d<=a[j]){
dp[i]=max(dp[j]+1,dp[i]);
}
}
}
}
int ans=0;
for(int i=l;i<=r;i++){
ans=max(ans,dp[i]);
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |