Submission #36364

#TimeUsernameProblemLanguageResultExecution timeMemory
36364funcsrDancing Elephants (IOI11_elephants)C++14
26 / 100
9000 ms25812 KiB
#pragma GCC optimize ("-O3") #include <iostream> #include <vector> #include <queue> #include <set> #include <algorithm> #include "elephants.h" using namespace std; #define INF 1145141919 #define rep(i, n) for (int i=0; i<(n); i++) #define pb push_back #define all(x) x.begin(), x.end() #define _1 first #define _2 second typedef pair<int, int> P; int N, L; int A[150001]; set<P> B; int fwd[150001]; void init(int n, int l, int X[]) { N = n, L = l; B.insert(P(INF, -1)); rep(i, N) B.insert(P(A[i] = X[i], i)); rep(i, N) fwd[i] = i+1; fwd[N-1] = -1; } int update(int i, int y) { // remove A[i] auto it = B.find(P(A[i], i)); if (it != B.begin()) { int prv = (--it)->_2; fwd[prv] = fwd[i]; it++; } B.erase(it); // insert y A[i] = y; auto it2 = B.insert(P(A[i], i))._1; auto prv(it2); if (prv != B.begin()) { prv--; fwd[prv->_2] = i; } it2++; fwd[i] = (it2)->_2; // int head = B.begin()->_2; int until = A[head]+L, c = 1; for (int i=head; i!=-1; i=fwd[i]) { if (A[i] > until) until = A[i]+L, c++; } return c; }
#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...