Submission #1241179

#TimeUsernameProblemLanguageResultExecution timeMemory
1241179porquenomedejainiciarsesionDancing Elephants (IOI11_elephants)C++20
26 / 100
9089 ms2772 KiB
#include "elephants.h"
#include <bits/stdc++.h>
using namespace std;
int n,l;
multiset<int> S;
set<int> Starts;
unordered_map<int,int> starts2;
unordered_map<int,int> M;
vector<int> A;
void init(int N, int L, int X[])
{
  for(int i=0;i<N;i++){
    M[X[i]]++;
    S.insert(X[i]);
    A.push_back(X[i]);
  }
  l=L;
  n = N;
}
int updates=0;
int ans;
int update(int i, int y)
{
  updates++;
  int old=A[i];
  A[i]=y;
  auto it=S.find(old); 
  if (it!=S.end()) S.erase(it);
  S.insert(y);
  bool ok=false;
  if (starts2[old]==1) {
    ok=true;
  }
  bool ok2 = false;
  if (!Starts.empty()) {
    auto it=Starts.upper_bound(y);
    if (it!=Starts.begin()) {
      --it;
      if (*it+l>=y) {
        ok2=true;
      }
    }
  }
  if(updates==1 || ok || !ok2){
    ans=0;
    int last = -1e9;
    starts2.clear();
    Starts.clear();
    for (auto x:S) {
      if (last + l < x) {
        last = x;
        starts2[last] = 1;
        Starts.insert(last);
        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...