Submission #786597

#TimeUsernameProblemLanguageResultExecution timeMemory
786597Ahmed57Dancing Elephants (IOI11_elephants)C++17
50 / 100
9041 ms3264 KiB
#include <bits/stdc++.h>

using namespace std;
int arr[50001],n,l;
unsigned short ind[50001],ind2[50001];
void init(int N,int L,int X[]){
    l = L;
    n = N;
    for(int i =0 ;i<n;i++){
        arr[i] = X[i];
        ind[i] = i;
        ind2[i] = i;
    }
}
int update(int i, int y){
    i = ind[i];
    arr[i] = y;
    if(arr[i]>arr[i-1]){
        while(i<n-1&&arr[i+1]<arr[i]){
            swap(arr[i],arr[i+1]);
            swap(ind[ind2[i]],ind[ind2[i+1]]);
            swap(ind2[i],ind2[i+1]);
            i++;
        }
    }else{
        while(i>0&&arr[i-1]>arr[i]){
            swap(arr[i],arr[i-1]);
            swap(ind[ind2[i]],ind[ind2[i-1]]);
            swap(ind2[i],ind2[i-1]);
            i--;
        }
    }
    int ans = 1 , la = arr[0];
    for(int i = 1;i<n;i++){
        if(arr[i]>la+l){
            la = arr[i];ans++;
        }
    }
    return ans;
}/*
int main(){
    int N = 4 , L = 10;
    int X[] ={10,15,17,20};
    init(N,L,X);
    cout<<update(2,16)<<endl;
    cout<<update(1,25)<<endl;
    cout<<update(3,35)<<endl;
    cout<<update(0,38)<<endl;
    cout<<update(2,0)<<endl;
}*/
#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...