제출 #1085678

#제출 시각아이디문제언어결과실행 시간메모리
1085678vjudge1Global Warming (CEOI18_glo)C++17
15 / 100
94 ms16212 KiB
#include <bits/stdc++.h> using namespace std; long long n,k; long long niza[200001]; long long dp[800001][2]; long long traze; long long najdi(long long l,long long r,long long poz,long long koj) { //cout<<"l="<<l<<" r="<<r<<" traze="<<traze<<" koj="<<koj<<" gleda "<<dp[poz][koj]<<endl; if (traze<=dp[poz][koj]) return 0; if (l==r) return r; long long mid = (l+r)/2; long long op = najdi(mid+1,r,poz*2+1,koj); if (op>0) return op; return najdi(l,mid,poz*2,koj); } long long p; long long dodaj(long long l,long long r,long long poz,long long koj) { if (l>p || r<p) return dp[poz][koj]; if (l==r) { dp[poz][koj] = min(traze,dp[poz][koj]); //cout<< "dp["<<poz<<"]["<<koj<<"] = "<<dp[poz][koj]<<endl; return dp[poz][koj]; } long long mid = (l+r)/2; dp[poz][koj] = min(dodaj(l,mid,poz*2,koj),dodaj(mid+1,r,poz*2+1,koj)); //cout<< "dp["<<poz<<"]["<<koj<<"] = "<<dp[poz][koj]<<endl; return dp[poz][koj]; } int main() { cin>>n>>k; for (long long i=1;i<=n;i++) cin>>niza[i]; for (long long i=0;i<=n*4;i++){ dp[i][0]=1000000; dp[i][1]=1000000; } long long odg = 0; for (long long i=1;i<=n;i++) { traze = niza[i]-k; long long op1 = najdi(1,n,1,0)+1; traze = niza[i]; long long op2 = najdi(1,n,1,0)+1; long long op3 = najdi(1,n,1,1)+1; traze = niza[i]-k; p = op1; dodaj(1,n,1,0); traze = niza[i]; p = op2; dodaj(1,n,1,1); traze = niza[i]; p = op3; dodaj(1,n,1,1); odg = max(odg,op1); odg = max(odg,op2); odg = max(odg,op3); //cout<< "za "<<niza[i]<< " op1="<<op1<<" op2=" <<op2<<" op3="<<op3<<endl<<endl; } cout<<odg<<endl; return 0; } /* 8 100 7 3 5 12 2 7 3 4 */
#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...