Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <vector>
- #include <algorithm>
- #include <cmath>
- #include <cstring>
- using namespace std;
- int main() {
- int T, N, M;
- cin >> T;while(T--){
- int a[100005], length = 0, flag = 0;
- vector<int> vec;
- cin >> N >> M;
- int i;
- for(i = 1;i <= N;i++) cin >> a[i];
- for(i = 1;i <= N;i++){
- if(a[i]>=M) {
- vec.push_back(a[i]);
- break;
- }
- else if(a[i]*2>=M) {
- vec.push_back(a[i]*2);
- break;
- }
- if(i==N)flag = 1;
- }
- if(flag){
- cout << 0 << endl;
- continue;
- }
- i++;
- for(;i <= N;i++){
- if(a[i]>=M&&a[i]>=vec.back())vec.push_back(a[i]);
- else {
- if(a[i]*2>=M){
- if(a[i]*2>=vec.back())vec.push_back(a[i]*2);
- else *lower_bound(vec.begin(),vec.end(),a[i]*2) = a[i]*2;
- }
- *lower_bound(vec.begin(),vec.end(),a[i]) = a[i];
- }
- }
- for(int j = 0;j< vec.size();j++)cout<<vec[j]<<' '<<endl;
- cout << vec.size() << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement