/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Accepted 1ms 324.0 KiB
#3 Accepted 1ms 532.0 KiB
#4 Accepted 1ms 396.0 KiB
#5 Accepted 1ms 320.0 KiB
#6 Accepted 1ms 320.0 KiB
#7 Accepted 1ms 760.0 KiB
#8 Accepted 1ms 764.0 KiB
#9 Accepted 1ms 320.0 KiB
#10 Accepted 1ms 488.0 KiB
#11 Accepted 1ms 532.0 KiB
#12 Accepted 1ms 532.0 KiB
#13 Accepted 1ms 324.0 KiB
#14 Accepted 1ms 324.0 KiB
#15 Accepted 1ms 344.0 KiB
#16 Accepted 1ms 372.0 KiB
#17 Accepted 1ms 764.0 KiB
#18 Accepted 1ms 528.0 KiB
#19 Accepted 1ms 320.0 KiB
#20 Accepted 1ms 552.0 KiB
#21 Accepted 2ms 576.0 KiB
#22 Accepted 10ms 1.168 MiB
#23 Accepted 11ms 1.062 MiB
#24 Accepted 13ms 1.312 MiB
#25 Accepted 19ms 1.871 MiB
#26 Accepted 10ms 1.062 MiB
#27 Accepted 3ms 684.0 KiB
#28 Accepted 11ms 1.266 MiB
#29 Accepted 12ms 1.332 MiB
#30 Accepted 20ms 1.77 MiB
#31 Accepted 15ms 1.562 MiB
#32 Accepted 20ms 1.969 MiB
#33 Accepted 16ms 1.691 MiB
#34 Accepted 13ms 1.316 MiB
#35 Accepted 21ms 2.246 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-11 02:27:17
Judged By
Score
100
Total Time
21ms
Peak Memory
2.246 MiB