Submission #787083

#TimeUsernameProblemLanguageResultExecution timeMemory
787083MinaRagy06Dancing Elephants (IOI11_elephants)C++17
50 / 100
9039 ms4416 KiB
#include <bits/stdc++.h> #pragma GCC optimize("Ofast") using namespace std; typedef int64_t ll; int n, l; int a[150'005][2]; void init(int N, int L, int X[]) { n = N, l = L; pair<int, int> v[n]; for (int i = 0; i < n; i++) { v[i] = {X[i], i}; } sort(v, v + n); for (int i = 0; i < n; i++) { a[i][0] = v[i].first; a[i][1] = v[i].second; } } int update(int x, int y) { int pos = -1; for (int i = 0; i < n; i++) { if (a[i][1] == x) { pos = i; break; } } if (a[pos][0] < y) { a[pos][0] = y; for (int i = pos; i + 1 < n && a[i][0] > a[i + 1][0]; i++) { swap(a[i][0], a[i + 1][0]); swap(a[i][1], a[i + 1][1]); } } else { a[pos][0] = y; for (int i = pos; i - 1 >= 0 && a[i][0] < a[i - 1][0]; i--) { swap(a[i][0], a[i - 1][0]); swap(a[i][1], a[i - 1][1]); } } int prv = a[0][0], cnt = 0; for (int i = 1; i < n; i++) { cnt += (a[i][0] - prv > l); if (a[i][0] - prv > l) prv = a[i][0]; } return cnt + 1; }
#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...