Submission #693013

#TimeUsernameProblemLanguageResultExecution timeMemory
693013PyqeRadio Towers (IOI22_towers)C++17
23 / 100
4066 ms2640 KiB
#include <bits/stdc++.h> #include "towers.h" using namespace std; #define mp make_pair #define fr first #define sc second const long long inf=1e18; long long a[100069],ps[100069]; void init(int n,vector<int> aa) { long long i; for(i=1;i<=n;i++) { a[i]=aa[i-1]; } for(i=1;i<=n;i++) { ps[i]=ps[i-1]+(i>1&&i<n&&a[i]<a[i-1]&&a[i]<a[i+1]); } } int max_towers(int lb,int rb,int cw) { lb++; rb++; if(lb==rb) { return 1; } else { long long i,j,mn,mx,z=ps[rb-1]-ps[lb]+(a[lb]<a[lb+1])+(a[rb]<a[rb-1]); for(i=lb;i<=rb;i++) { if((i==lb&&a[i]<a[i+1])||(i==rb&&a[i]<a[i-1])||(i>lb&&i<rb&&a[i]<a[i-1]&&a[i]<a[i+1])) { mn=inf; mx=-inf; for(j=i-1;j>=lb;j--) { if(a[j]<a[i]) { break; } mx=max(mx,a[j]); } if(j>=lb) { mn=min(mn,mx); } mx=-inf; for(j=i+1;j<=rb;j++) { if(a[j]<a[i]) { break; } mx=max(mx,a[j]); } if(j<=rb) { mn=min(mn,mx); } if(mn-a[i]<cw) { z--; } } } return z; } }
#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...