Submission #629708

#TimeUsernameProblemLanguageResultExecution timeMemory
629708peti1234Radio Towers (IOI22_towers)C++17
27 / 100
4067 ms1572 KiB
#include <bits/stdc++.h>

using namespace std;
const int c=100005;
int n, t[c], pos;
bool tc1=1;
void init(int N, vector<int> sz) {
    n=N;
    for (int i=0; i<n; i++) {
        t[i+1]=sz[i];
        if (t[i+1]>t[pos]) pos=i+1;
    }
    for (int i=1; i<=n; i++) {
        if (i<pos && t[i]>t[i+1] || i>pos && t[i]>t[i-1]) {
            tc1=0;
        }
    }
}

int lassu(int l, int r, int d) {
    int ut=t[l]+d, ans=0, id=1;
    for (int i=l; i<=r; i++) {
        if (id==1) {
            ut=max(ut, t[i]);
            if (ut-t[i]>=d) {
                ut=t[i];
                id=0;
                ans++;
            }
        } else {
            ut=min(ut, t[i]);
            if (t[i]-ut>=d) {
                ut=t[i];
                id=1;
            }
        }
    }
    return ans;
}

int max_towers(int l, int r, int d) {
    l++, r++;
    if (tc1) {
        if (l<=pos && pos<=r && max(t[l], t[r])+d<=t[pos]) return 2;
        return 1;
    }
    return lassu(l, r, d);
}
/*
int main()
{
    int N;
    vector<int> P;
    cin >> N;
    for (int i=0; i<N; i++) {
        int x;
        cin >> x;
        P.push_back(x);
    }
    init(N, P);
    int q;
    cin >> q;
    while (q--) {
        int l, r, d;
        cin >> l >> r >> d;
        cout << max_towers(l, r, d) << "\n";
    }
    return 0;
}
*/
/*
7
1 2 6 4 5 3 7
3
1 5 1
1 5 2
1 5 3
*/

Compilation message (stderr)

towers.cpp: In function 'void init(int, std::vector<int>)':
towers.cpp:14:19: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   14 |         if (i<pos && t[i]>t[i+1] || i>pos && t[i]>t[i-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...