This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "bits/stdc++.h"
using namespace std;
#define int long long
const int inf = 1e9;
const int ms = 2e5 + 5;
int seg[4*ms], n;
void upd(int pos, int val, int l=0, int r=n-1, int idx=0){
if(l == r){
seg[idx] = val;
return;
}
int m = (l+r)/2;
if(pos <=m ) upd(pos, val, l, m, 2*idx + 1);
else upd(pos, val, m+1, r, 2*idx + 2);
seg[idx] = max(seg[2*idx + 1], seg[2*idx +2]);
}
int qry(int L, int R, int l=0, int r=n-1 ,int idx=0){
if(l > R || r < L) return 0;
if(r <= R && l >= L) return seg[idx];
int m = (l + r)/2;
return max(qry(L, R, l, m, 2*idx + 1), qry(L, R, m+1, r, 2*idx + 2));
}
signed main() {
cin.tie(0);
ios::sync_with_stdio(0);
int m;
cin >> n >> m;
vector<int> v;
for(int i=0; i<n; i++){
int a; cin >> a;
if(m*(i+1) >=a ) v.push_back(m*(i+1) - a);
}
vector<int> lis;
for(int i=0; i<v.size(); i++){
int id = upper_bound(lis.begin(), lis.end(), v[i]) - lis.begin();
if(id == lis.size()){
lis.push_back(v[i]);
}
else lis[id] = v[i];
}
cout << n - lis.size() << endl;
return 0;
}
Compilation message (stderr)
triusis.cpp: In function 'int main()':
triusis.cpp:47:17: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
47 | for(int i=0; i<v.size(); i++){
| ~^~~~~~~~~
triusis.cpp:49:11: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
49 | if(id == lis.size()){
| ~~~^~~~~~~~~~~~~| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |