제출 #1035106

#제출 시각아이디문제언어결과실행 시간메모리
1035106irmuun송신탑 (IOI22_towers)C++17
14 / 100
687 ms3160 KiB
#include<bits/stdc++.h>
#include "towers.h"

using namespace std;

#define ll long long
#define pb push_back
#define ff first
#define ss second
#define all(s) s.begin(),s.end()
#define rall(s) s.rbegin(),s.rend()

struct segtree{
    vector<int>d;
    void init(int n){
        d.resize(4*n);
        build(1,0,n-1);
    }
    void build(int v,int l,int r){
        if(l==r){
            d[v]=0;
            return;
        }
        int mid=(l+r)>>1;
        build(v*2,l,mid);
        build(v*2+1,mid+1,r);
        d[v]=d[v*2]+d[v*2+1];
    }
    int query(int v,int l,int r,int L,int R){
        if(R<L||r<L||R<l) return 0;
        if(L<=l&&r<=R){
            return d[v];
        }
        int mid=(l+r)>>1;
        return query(v*2,l,mid,L,R)+query(v*2+1,mid+1,r,L,R);
    }
    void update(int v,int l,int r,int pos,int val){
        if(r<pos||pos<l) return;
        if(l==r){
            d[v]=val;
            return;
        }
        int mid=(l+r)>>1;
        update(v*2,l,mid,pos,val);
        update(v*2+1,mid+1,r,pos,val);
        d[v]=d[v*2]+d[v*2+1];
    }
};

segtree sg;

int n;
vector<int>h;
vector<pair<int,int>>v;
vector<bool>used;

void init(int N,vector<int>H){
    n=N; h=H;
    used.resize(n);
    sg.init(n);
    for(int i=1;i<n-1;i++){
        if(h[i]<h[i-1]&&h[i]<h[i+1]){
            sg.update(1,0,n-1,i,1);
        }
    }
}

int max_towers(int L,int R,int D){
    int ans=sg.query(1,0,n-1,L+1,R-1);
    if(L<R){
        if(h[L]<h[L+1]) ans++;
        if(h[R]<h[R-1]) ans++;
    }
    ans=max(ans,1);
    return ans;
}
#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...