이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
const int N = 2e5+10;
int dp[N];
vector<pair<int,int>> a[N];
vector<int> keep;
int main(){
// freopen("pcb.in", "r", stdin);
// freopen("pcb.out", "w", stdout);
ios::sync_with_stdio(false); cin.tie(0);
int n,m; cin >> n >> m;
int cnt = 0;
for(int i=0;i<n;i++){
int temp; cin >> temp;
keep.push_back(temp);
int idx = lower_bound(dp, dp + cnt , temp) - dp;
if(idx == cnt) cnt++;
dp[idx] = temp;
a[idx].push_back({temp,i});
}
vector<int> ans;
int idx_first, idx_last;
int num = a[cnt-1][0].first; ans.push_back(num);
idx_last = a[cnt-1][0].second;
for(int i=cnt-2;i>=0;i--){
for(auto e:a[i]){
if(e.first < num){
num = e.first;
idx_first = e.second;
ans.push_back(num);
break;
}
}
}
// reverse(ans.begin(), ans.end());
// for(auto e:ans){
// cout << e << " ";
// }cout << endl;
// cout << idx_first << " " << idx_last;
for(int i=idx_first;i<=idx_last;i++){
keep[i] -= m;
}
cnt = 0;
for(int i=0;i<keep.size();i++){
int idx = lower_bound(dp, dp + cnt, keep[i]) - dp;
if(idx == cnt) cnt++;
dp[idx] = keep[i];
}
for(int i=idx_first;i<=idx_last;i++){
keep[i] += m + m;
}
int cnt2 = 0;
for(int i=0;i<keep.size();i++){
int idx = lower_bound(dp, dp + cnt2, keep[i]) - dp;
if(idx == cnt2) cnt2++;
dp[idx] = keep[i];
}
cout << max(cnt2,cnt) << endl;
}
컴파일 시 표준 에러 (stderr) 메시지
glo.cpp: In function 'int main()':
glo.cpp:45:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
45 | for(int i=0;i<keep.size();i++){
| ~^~~~~~~~~~~~
glo.cpp:54:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
54 | for(int i=0;i<keep.size();i++){
| ~^~~~~~~~~~~~
glo.cpp:23:9: warning: 'idx_first' may be used uninitialized in this function [-Wmaybe-uninitialized]
23 | int idx_first, idx_last;
| ^~~~~~~~~| # | 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... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |