/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Accepted 1ms 532.0 KiB
#3 Accepted 1ms 532.0 KiB
#4 Accepted 1ms 532.0 KiB
#5 Accepted 1ms 532.0 KiB
#6 Accepted 1ms 344.0 KiB
#7 Accepted 1ms 532.0 KiB
#8 Accepted 1ms 532.0 KiB
#9 Accepted 1ms 484.0 KiB
#10 Accepted 1ms 532.0 KiB
#11 Accepted 1ms 532.0 KiB
#12 Accepted 1ms 532.0 KiB
#13 Accepted 1ms 532.0 KiB
#14 Accepted 1ms 516.0 KiB
#15 Accepted 1ms 420.0 KiB
#16 Accepted 1ms 324.0 KiB
#17 Accepted 1ms 532.0 KiB
#18 Accepted 1ms 480.0 KiB
#19 Accepted 1ms 364.0 KiB
#20 Accepted 1ms 536.0 KiB
#21 Accepted 2ms 532.0 KiB
#22 Accepted 10ms 1.066 MiB
#23 Accepted 12ms 1.066 MiB
#24 Accepted 15ms 1.27 MiB
#25 Accepted 22ms 1.77 MiB
#26 Accepted 13ms 1.066 MiB
#27 Accepted 4ms 532.0 KiB
#28 Accepted 14ms 1.02 MiB
#29 Accepted 31ms 1.27 MiB
#30 Accepted 25ms 1.77 MiB
#31 Accepted 27ms 1.52 MiB
#32 Accepted 24ms 1.77 MiB
#33 Accepted 16ms 1.52 MiB
#34 Accepted 13ms 1.27 MiB
#35 Accepted 21ms 2.02 MiB

Code


#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
#define pb push_back
#define mod 1000000007
#define srt(v) sort(v.begin(),v.end())
#define rsrt(v) sort(v.rbegin(),v.rend())
#define OPTIMIZE_IO ios::sync_with_stdio(false); cin.tie(nullptr);

pair<ll,ll> min_seg(vector<ll> &arr){
    ll n = arr.size();
    ll left = 0, right = n - 1;

    while (left < n - 1 && arr[left] <= arr[left + 1]) {
        left++;
    }
    if (left == n - 1) return {0,0}; 

    while (right > 0 && arr[right - 1] <= arr[right]) {
        right--;
    }
    
    ll minVal = *min_element(arr.begin() + left, arr.begin() + right + 1);
    ll maxVal = *max_element(arr.begin() + left, arr.begin() + right + 1);

    while (left > 0 && arr[left - 1] > minVal) left--;
    while (right < n - 1 && arr[right + 1] < maxVal) right++;

    return {left,right};
}

void solve() {
    ll n,k;
    cin>>n>>k;
    vector<ll> arr(n);
    for(int i=0; i<n; i++)cin>>arr[i];
    auto p=min_seg(arr);
    ll left=p.first,right=p.second;
    ll len=right-left+1;
    if(len>k){
        cout<<"NO"<<endl;
    }
    else{
        cout<<"YES"<<endl;
        cout<<left+1<<" "<<right+1<<endl;
    }
}

int main() {
    OPTIMIZE_IO;
    int t=1;
  
    while (t--) {
        solve();
    }
    return 0;
}

Information

Submit By
Type
Submission
Problem
P1120 Stairway to the Skyline
Contest
Brain Booster #7
Language
C++17 (G++ 13.2.0)
Submit At
2024-11-05 16:27:39
Judged At
2024-11-05 16:27:39
Judged By
Score
100
Total Time
31ms
Peak Memory
2.02 MiB