Submission #173897

#TimeUsernameProblemLanguageResultExecution timeMemory
173897stefdascaDancing Elephants (IOI11_elephants)C++14
26 / 100
9033 ms2100 KiB
#include<bits/stdc++.h> using namespace std; int n, lg; int vals[150002], srt[150002], nw[150002]; void init(int N, int L, int X[]) { n = N; lg = L; for(int i = 1; i <= N; ++i) srt[i] = X[i-1], vals[i] = X[i-1]; sort(srt + 1, srt + n + 1); srt[n+1] = 2100000000; } int binsearch(int val) { int st = 1; int dr = n; int ans = 0; while(st <= dr) { int mid = (st + dr) / 2; if(srt[mid] <= val) ans = mid, st = mid + 1; else dr = mid - 1; } return ans; } int update(int i, int y) { ++i; if(n == 2) { vals[i] = y; if(abs(vals[1] - vals[2]) > lg) return 2; return 1; } // cout << vals[i] << " " << y << '\n'; /* int pz = binsearch(vals[i]); int pma = pz; int pmb = pz+1; */ vals[i] = y; for(int i = 1; i <= n; ++i) srt[i] = vals[i]; // srt[pz] = vals[y]; sort(srt + 1, srt + n + 1); /* while(pma <= n) { if(y <= srt[pmb]) srt[pma] = y, y = (1<<30), ++pma; else srt[pma] = srt[pmb], ++pmb, ++pma; } */ int ans = 0; int st = 0; for(int i = 1; i <= n;) { ++ans; st = srt[i]; while(i <= n && srt[i] - st <= lg) ++i; } // for(int i = 1; i <= n; ++i) // cout << srt[i] << " "; // cout << '\n'; 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...