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 "towers.h"
#include <bits/stdc++.h>
using namespace std;
int kval, k, n, premier, dernier;
set<pair<int, int>> avant;
set<pair<int, int>> apres;
void init(int tempn, vector<int> temph) {
n=tempn;
premier=temph[0], dernier=temph[n-1];
for (int i = 1; i < n; ++i)
{
if (temph[i]<temph[i-1])
{
kval=temph[i-1], k=i-1;
break;
}
avant.insert({temph[i-1], i-1});
}
for (int i = k+1; i < n; ++i)
{
apres.insert({temph[i], i});
}
return;
}
int max_towers(int L, int R, int D) {
if (kval-D<premier || kval-D<dernier) return 0;
auto itl=avant.lower_bound({kval-D, 0});
auto itr=apres.lower_bound({kval-D, 0});
if (itl==avant.end() || itr==apres.end()) itl--, itr--;
auto a=*itl, b=*itr;
int l=a.second, r=b.second;
if (l<L || r>R) return 0;
return (l-L+1)*(R-r+1);
}
# | 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... |