Submission #689645

#TimeUsernameProblemLanguageResultExecution timeMemory
689645lohachoRadio Towers (IOI22_towers)C++17
23 / 100
4054 ms13032 KiB
#include "towers.h"

#include <bits/stdc++.h>
using namespace std;

int n;
vector<int> a;

void init(int N, std::vector<int> H) {
    n = N;
    a = H;
}

int max_towers(int L, int R, int D) {
    vector<vector<int>> srt;
    for(int i = L; i <= R; ++i){
        srt.push_back({a[i], i});
    }

    sort(srt.begin(), srt.end());

    vector<vector<int>> ran;
    for(int i = 0; i < (int)srt.size(); ++i){
        int now = srt[i][1];

        int r = now + 1, can = 1;
        while(r <= R && a[r] < a[now] + D){
            ++r;
        }

        int l = now - 1;
        while(l >= L && a[l] < a[now] + D){
            --l;
        }

        ran.push_back({l + 1, r - 1});
    }

    sort(ran.begin(), ran.end(), [&](vector<int>&x, vector<int>&y){return x[1] < y[1];});

    int ans = 0, mx = -1;
    for(int i = 0; i < (int)ran.size(); ++i){
        if(ran[i][0] > mx){
            ++ans;
            mx = ran[i][1];
        }
    }

    return ans;
}

Compilation message (stderr)

towers.cpp: In function 'int max_towers(int, int, int)':
towers.cpp:26:26: warning: unused variable 'can' [-Wunused-variable]
   26 |         int r = now + 1, can = 1;
      |                          ^~~
#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...