Submission #780961

#TimeUsernameProblemLanguageResultExecution timeMemory
780961Mouad_oujRadio Towers (IOI22_towers)C++17
0 / 100
503 ms1360 KiB
#include "towers.h" //sub1
#include <bits/stdc++.h>
using namespace std;
vector<int> he;
int k=-1;
void init (int n,vector<int> h)
{
    he.resize(n);
    for(int x=0;x<n;x++)
    {
    he[x]=h[x];
    if(h[x]>h[x+1] && x!=n && k==-1)
    k=x;
    }
    if(h[n-1]>h[n-2])
    k=n-1;
}
int max_towers(int l, int r, int d)
{
    if(k>r || k<l || he[r]>he[k]-d || he[l]>he[k]-d)
    return 0;
    int ml=k,mr=r;
    while(ml!=mr)
    {
        int mid=(ml+mr)/2;
        if(he[mid]>he[k]-d)
        ml=mid+1;
        else
        mr=mid;
    }
    int a1=mr,a2=0;
    ml=l,mr=k;
    while(ml!=mr)
    {
        int mid=(ml+mr)/2;
        if(he[mid]<he[k]-d)
        ml=mid+1;
        else
        mr=mid;
    }
    a2=mr;
    return ((r-a1+1)*(a2-l));
}
#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...