제출 #1022578

#제출 시각아이디문제언어결과실행 시간메모리
1022578JakobZorzRadio Towers (IOI22_towers)C++17
0 / 100
4035 ms3308 KiB
#include"towers.h"
#include<vector>
#include<iostream>
using namespace std;

vector<int>arr;

void init(int N,vector<int>H){
    arr=H;
}

int solve(vector<int>arr,int d){
    vector<int>arr2=arr;
    arr.clear();
    arr2.insert(arr2.begin(),1e9+1);
    arr2.push_back(1e9+1);
    
    for(int i=1;i<(int)arr2.size()-1;i++){
        if(arr2[i-1]<arr2[i]&&arr2[i+1]<arr2[i])
            arr.push_back(arr2[i]);
        if(arr2[i-1]>arr2[i]&&arr2[i+1]>arr2[i])
            arr.push_back(arr2[i]);
    }
    
    while(true){
        bool removed=false;
        for(int i=1;i<(int)arr.size();i+=2){
            if(arr[i]-max(arr[i-1],arr[i+1])<d){
                removed=true;
                arr[i-1]=min(arr[i-1],arr[i+1]);
                arr.erase(arr.begin()+i);
                arr.erase(arr.begin()+i);
                break;
            }
        }
        if(!removed)
            break;
    }
    
    return (arr.size()+1)/2;
}

int max_towers(int L,int R,int D){
    vector<int>arr2;
    for(int i=L;i<=R;i++)
        arr2.push_back(arr[i]);
    return solve(arr2,D);
}
#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...