UPDATE: Em sửa được cho nó nhập bình thường rồi, nhưng nó không chạy đúng theo ý tưởng của em. Ai biết em sai ở đâu thì chỉ em với!!!
Em chào anh chị ạ! Nay em có làm 1 bài là cho 1 dãy n số, số đầu tiên thì viết ở đầu, số thứ 2 thì viết ở cuối, số thứ 3 viết sau số đầu, số thứ 4 thì viết trước số ở cuối… cứ như thế cho đến hết dãy. Ví dụ cho dãy:
1 2 3 4 5 6
thì viết lại sẽ là
1 3 5 6 4 2
Trong đó input dòng 1 integer t là số test case, dòng tiếp theo là n - số phần tử trong dãy, và dòng cuối là các phần tử, output thì hiện dãy đã biến đổi ra.
Ví dụ:
Input:
2
6
1 2 3 4 5 6
2
5 3
Output:
1 3 5 6 4 2
5 3
Để làm bài này thì em nảy ra ý tưởng là dùng , tạo 2 list mới, với các phần tử chẵn a[0], a[2]… thì push_back vào 1 list, với các phần tử lẻ thì push_front vào 1 list rồi in 2 list này ra (thực ra em muốn merge 2 list nhưng em k biết merge kiểu gì :v). Em gõ theo ý tưởng này thì nó vẫn chạy nhưng mà lúc nhập thì nhập được vài số xong k nhập được luôn. Các anh chị chỉ giúp em xem em sai chỗ nào với.
#include<iostream>
#include<bits/stdc++.h>
#include<list>
#include<string>
using namespace std;
void printflist(list<int> words)
{
list<int>::iterator i;
for (i = words.begin(); i != words.end(); i++)
{
cout << *i << " ";
}
}
int main(){
int tc;
cin >> tc;
while(tc--){
int n;
int a[n];
cin >> n;
for (int i=0; i<n; i++){
cin >> a[i];
}
list<int>st1;
list<int>st2;
for (int i=0; i<n; i+=2) st1.push_back(a[i]);
for (int i=1; i<n; i+=2) st2.push_front(a[i]);
printflist(st1);
printflist(st2);
}
return 0;
}


83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?