Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <list>
- #include <cstdlib>
- using namespace std;
- list<int> L;
- int n, p, ln=0,len,tdiff, diff;
- int b;
- int main ()
- {
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- list<int>::iterator it;
- scanf("%u", &n);
- it = L.begin();
- for(unsigned int i = 1; i <= n; i++){
- len = L.size();
- scanf("%d %u", &b, &p);
- p = p-1;
- tdiff = abs(len-p);
- diff = abs(p-ln);
- if(tdiff <= diff){
- if(tdiff < p){
- it = L.end();
- for(int i = len; i > p; i--)
- it--;
- }
- else{
- it = L.begin();
- for(int i = 0; i < p; i++)
- it++;
- }
- }
- else{
- if(diff < p){
- if(ln > p){
- for(int i = 0; i < diff+1; i++)
- it--;
- }
- else{
- if(ln==p){it--;}
- else{
- for(int i = 0; i < diff-1; i++){
- it++;
- }
- }
- }
- }
- else{
- it = L.begin();
- for(int i = 0; i < p; i++)
- it++;
- }
- }
- ln = p;
- L.insert(it,b);
- }
- //Create an iterator to make for efficient for loops
- for ( it=L.begin() ; it != L.end(); it++ )
- printf("%d ", *it);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement