UVA 133 - The Dole Queue

不知道为什么会有Runtime Error咧..求高手!

挺简单的用list的题目。

View Code
 1 #include <iostream>
 2 #include <list>
 3 using namespace std;
 4 
 5 int main(){
 6     int N, k, m;
 7     cin >> N >> k >> m;
 8     while (N != 0 && k != 0 && m != 0){
 9 
10         list<int> ring;
11         for (int i = 1; i <= N; i++){
12             ring.push_back(i);
13         }
14 
15         list<int>::iterator it = ring.begin();
16         list<int>::reverse_iterator rit = ring.rbegin();
17         bool start = true;
18         while (!ring.empty()){
19             for (int i = 1; i < k; i++){
20                 ++it;
21                 if (it == ring.end())
22                     it = ring.begin();
23             }
24             for (int i = 1; i < m; i++){
25                 ++rit;
26                 if (rit == ring.rend()){
27                     rit = ring.rbegin();
28                 }
29             }
30             int first = *it, second = *rit;
31             if (start)
32                 start = false;
33             else
34                 cout << ",";
35 
36             if (first >= 10)
37                 cout << " ";
38             else
39                 cout << "  ";
40             cout << first;
41             it = ring.erase(it);
42             if (*it == *rit){
43                 ++it;
44             }
45             if (it == ring.end())
46                 it = ring.begin();
47 
48 
49             if (first != second){
50                 if (second >= 10)
51                     cout << " ";
52                 else
53                     cout << "  ";
54                 cout << second;
55                 if (rit == --(ring.rend())){
56                     ring.erase(--rit.base());
57                     rit = ring.rbegin();
58                 }
59                 else{
60                     list<int>::reverse_iterator temp(ring.erase(--rit.base()));
61                     rit = temp;
62                 }
63             }
64         }
65         cout << endl;
66         cin >> N >> k >> m;
67     }
68     return 0;
69 }

 

posted @ 2013-01-20 00:51  frankdj  阅读(158)  评论(0)    收藏  举报