Submission #448605

#TimeUsernameProblemLanguageResultExecution timeMemory
448605dxz05Dancing Elephants (IOI11_elephants)C++14
50 / 100
9022 ms2640 KiB
#pragma GCC optimize("Ofast,unroll-loops,O2") #pragma GCC target("avx,avx2") #include "elephants.h" #include <bits/stdc++.h> using namespace std; const int MAXN = 2e5 + 3e2; int N, L; int X[MAXN], A[MAXN]; void init(int _N, int _L, int _X[]){ N = _N; L = _L; for (int i = 0; i < N; i++) X[i] = _X[i]; for (int i = 0; i < N; i++) A[i] = X[i]; sort(A, A + N); } int lastans = -1; int update(int pos, int val){ if (X[pos] == val && lastans != -1) return lastans; int ind = find(A, A + N, X[pos]) - A; A[ind] = val; if (X[pos] < val) { while (ind < N - 1 && A[ind] > A[ind + 1]) { swap(A[ind], A[ind + 1]); ind++; } } else { while (ind > 0 && A[ind] < A[ind - 1]) { swap(A[ind], A[ind - 1]); ind--; } } X[pos] = val; //for (int i = 0; i < N; i++) cerr << X[i] << ' '; cerr << endl; //for (int i = 0; i < N; i++) cerr << A[i] << ' '; cerr << endl << endl; int ans = 1, last = A[0]; int i = 0; while (i < N){ if (A[i] - last > L){ last = A[i]; ans++; } i++; } lastans = 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...