Submission #833776

#TimeUsernameProblemLanguageResultExecution timeMemory
833776kevinsogoDancing Elephants (IOI11_elephants)C++17
26 / 100
9082 ms3252 KiB
#include <bits/stdc++.h> using namespace std; #include "elephants.h" using ll = long long; #ifdef LOCAL bool debug = true; #else bool debug = false; #endif int n, L; vector<pair<int,int>> x; vector<int> best; void init(int N, int L, int X[]) { n = N; ::L = L; x.resize(n); best.resize(n + 1); for (int i = 0; i < n; i++) { x[i] = {X[i], i}; } } int update(int i, int y) { if (debug) { cerr << "DOING UPDATE " << i << " " << y << endl; } if (debug) { cerr << "INITIALLY: "; } if (debug) { for (int t = 0; t < n; t++) cerr << x[t].first << " "; cerr << endl; } for (int t = 0; t < x.size(); t++) { auto& [v, j] = x[t]; if (j == i) { v = y; i = t; break; } } assert(x[i].first == y); while (i + 1 < n and x[i].first > x[i + 1].first) { swap(x[i], x[i + 1]); i++; } while (i - 1 >= 0 and x[i - 1].first > x[i].first) { swap(x[i - 1], x[i]); i--; } if (debug) { cerr << "AFTER UPDATE: "; } if (debug) { for (int t = 0; t < n; t++) cerr << x[t].first << " "; cerr << endl; } int prev = -1; for (int i = 0; i < n; i++) { while (prev + 1 < i and x[prev + 1].first <= x[i].first - L - 1) { prev++; } best[i + 1] = best[prev + 1] + 1; } return best[n]; }

Compilation message (stderr)

elephants.cpp: In function 'int update(int, int)':
elephants.cpp:31:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   31 |     for (int t = 0; t < x.size(); t++) {
      |                     ~~^~~~~~~~~~
#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...