UVA 120 Stacks of Flapjacks (STL deque&reverse)

来源:互联网 发布:鸟哥的linux私房菜微盘 编辑:程序博客网 时间:2024/06/14 09:57
#include<cstdio>#include<iostream>#include<cstring>#include<string.h>#include<algorithm>#include<queue>#include<cstring>#include<sstream>using namespace std;deque<int> res;int Is_order(){    for(int i = 0; i < (int)res.size() - 1;++i)        if(res[i] > res[i+1]) return 0;    return 1;}int main(){   string s;   int buf;   while(getline(cin, s))   {       cout << s << endl;       res.clear();       stringstream t(s);       while(t >> buf) res.push_back(buf);       int n = res.size();       int cnt = 0;       while(!Is_order())       {           int pos = max_element(res.begin(), res.end() - cnt) - res.begin();           if(pos == res.end() - res.begin() - cnt) { ++cnt; continue; }           else if(pos != 0)           {               deque<int> tmp;               tmp.clear();               for(int i = 0; i <= pos; ++i)                   tmp.push_back(res[i]);               for(int i = 0; i <= pos; ++i) res.pop_front();               for(int i = 0; i <= pos; ++i) res.push_front(tmp[i]);               printf("%d ", n - pos);           }           else if(pos  == 0)           {               deque<int> tmp;               tmp.clear();               for(int i = 0; i <= n - cnt - 1; ++i)                   tmp.push_back(res[i]);               for(int i = 0; i <= n - cnt - 1; ++i) res.pop_front();               for(int i = 0; i <= n - cnt - 1; ++i) res.push_front(tmp[i]);               printf("%d ", cnt+1);               ++cnt;           }       }       printf("0\n");   }   return 0;}

0 0
原创粉丝点击