Advertisement
triclops200

mine

Jan 1st, 2012
283
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.12 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <list>
  3. #include <cstdlib>
  4. using namespace std;
  5.  
  6. list<int> L;
  7. int n, p, ln=0,len,tdiff, diff;
  8. int b;
  9. int main ()
  10. {
  11.     freopen("input.txt", "r", stdin);
  12.     freopen("output.txt", "w", stdout);
  13.     list<int>::iterator it;
  14.     scanf("%u", &n);
  15.     it = L.begin();
  16.     for(unsigned int i = 1; i <= n; i++){
  17.         len = L.size();
  18.         scanf("%d %u", &b, &p);
  19.         p = p-1;
  20.         tdiff = abs(len-p);
  21.         diff = abs(p-ln);
  22.         if(tdiff <= diff){
  23.             if(tdiff < p){
  24.                 it = L.end();
  25.                 for(int i = len; i > p; i--)
  26.                     it--;
  27.             }
  28.             else{
  29.                 it = L.begin();
  30.                 for(int i = 0; i < p; i++)
  31.                     it++;
  32.             }
  33.         }
  34.         else{
  35.             if(diff < p){      
  36.                     if(ln > p){
  37.                         for(int i = 0; i < diff+1; i++)
  38.                             it--;
  39.                     }          
  40.                     else{
  41.                         if(ln==p){it--;}
  42.                         else{
  43.                             for(int i = 0; i < diff-1; i++){
  44.                                 it++;
  45.                             }
  46.                         }              
  47.                     }              
  48.             }
  49.             else{
  50.                 it = L.begin();
  51.                 for(int i = 0; i < p; i++)
  52.                     it++;
  53.             }
  54.         }
  55.         ln = p;
  56.         L.insert(it,b);
  57.     }
  58.      //Create an iterator to make for efficient for loops  
  59.     for ( it=L.begin() ; it != L.end(); it++ )
  60.         printf("%d ", *it);
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement