제출 #1093957

#제출 시각아이디문제언어결과실행 시간메모리
1093957Aviansh코끼리 (Dancing Elephants) (IOI11_elephants)C++17
50 / 100
9063 ms5552 KiB
#include <bits/stdc++.h> #include "elephants.h" using namespace std; int n; int l; int *x; unordered_map<int,int>mp; int uni[70000]; int siz = 0; void init(int N, int L, int X[]) { n = N; l=L; x=X; for(int i = 0;i<n;i++){ mp[x[i]]++; } for(pair<int,int>p:mp){ uni[siz]=p.first; siz++; } sort(uni,uni+siz); } void rem(int ind){ for(int i = ind+1;i<siz;i++){ uni[i-1]=uni[i]; } siz--; } void add(int ind , int val){ siz++; for(int i = siz;i>ind;i--){ uni[i]=uni[i-1]; } uni[ind]=val; } int update(int i, int y) { mp[x[i]]--; if(mp[x[i]]==0){ mp.erase(x[i]); //uni.erase(lower_bound(uni.begin(),uni.end(),x[i])); for(int e = 0;e<siz;e++){ if(uni[e]==x[i]){ rem(e); break; } } } x[i]=y; mp[x[i]]++; if(mp[x[i]]==1){ //int ind = lower_bound(uni.begin(),uni.end(),x[i])-uni.begin(); //uni.insert(uni.begin()+ind,x[i]); if(uni[siz-1]<x[i]){ add(siz,x[i]); } else{ for(int e = 0;e<siz;e++){ if(uni[e]>=x[i]){ add(e,x[i]); break; } } } } int ans = 1; int las = uni[0]; for(int i = 0;i<siz;i++){ int curr = uni[i]; if(curr-las>l){ las=curr; ans++; } } 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...