Submission #929091

#TimeUsernameProblemLanguageResultExecution timeMemory
929091KarootRabbit Carrot (LMIO19_triusis)C++17
100 / 100
94 ms16864 KiB
#include <iostream> #include <cmath> #include <unordered_map> #include <map> #include <set> #include <queue> #include <vector> #include <string> #include <iomanip> #include <algorithm> #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() using namespace std; typedef long long ll; ll linf = 1e15+1; inline void scoobydoobydoo(){ ios::sync_with_stdio(false); ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); } int main(){ scoobydoobydoo(); ll n, M; cin >> n >> M; vector<ll> v(n); vector<ll> filtered; for (int i = 0; i < n; i++){ cin >> v[i]; if (v[i] <= M*(i+1))filtered.push_back(-v[i]+M*(i+1)); } set<pair<ll, ll> > s; //value, dp ll dp[200001]; if (filtered.size() == 0){ cout << n << endl; return 0; } dp[0] = 1; s.insert({0, 0}); s.insert({filtered[0], 1}); for (int i = 1; i < filtered.size(); i++){ auto it = s.upper_bound({filtered[i], 10000000}); it--; dp[i] = (*it).second + 1; if ((*it).first == filtered[i])s.erase(it); s.insert({filtered[i], dp[i]}); while (true){ auto itr = s.find({filtered[i], dp[i]}); itr++; if (itr == s.end())break; if ((*itr).second > dp[i])break; s.erase(itr); } } cout << n - (*s.rbegin()).second << endl; return 0; }

Compilation message (stderr)

triusis.cpp: In function 'int main()':
triusis.cpp:49:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   49 |     for (int i = 1; i < filtered.size(); i++){
      |                     ~~^~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...