cf C. Dima and Containers

http://codeforces.com/contest/358/problem/C

将最大的放在stack里面,第二大的放在queue中,第三大的放在deck里面。然后模拟就可以了。

 1 #include <cstdio>

 2 #include <cstring>

 3 #include <queue>

 4 #include <algorithm>

 5 using namespace std;

 6 int a[100010];

 7 

 8 priority_queue<int ,vector<int>,less<int> >q;

 9 int n;

10 

11 int main()

12 {

13     scanf("%d",&n);

14     for(int i=1; i<=n; i++)

15     {

16         scanf("%d",&a[i]);

17     }

18     for(int i=1; i<=n; i++)

19     {

20         int t1=0;

21         int k=i;

22         while(1)

23         {

24             if(a[i]==0||i==n) break;

25             q.push(a[i]);

26             i++;

27         }

28         int max1=0,max2=0,max3=0;

29         if(!q.empty())

30         {

31             max1=q.top();

32             q.pop();

33             t1++;

34         }

35         if(!q.empty())

36         {

37             max2=q.top();

38             q.pop();

39             t1++;

40         }

41         if(!q.empty())

42         {

43             max3=q.top();

44             q.pop();

45             t1++;

46         }

47         for(int j=k; j<=i; j++)

48         {

49             if(a[j]==max1&&max1)

50             {

51                 max1=0;

52                 printf("pushStack\n");

53             }

54             else if(a[j]==max2&&max2)

55             {

56                 max2=0;

57                 printf("pushQueue\n");

58             }

59             else if(a[j]==max3&&max3)

60             {

61                 max3=0;

62                 printf("pushFront\n");

63             }

64             else if(a[j]!=0) printf("pushBack\n");

65         }

66         if(a[i]==0)

67         {

68             if(t1==0)

69                 printf("%d\n",0);

70             else printf("%d",t1);

71             if(t1>=3)

72             {

73                 printf(" popStack popQueue popFront\n");

74             }

75             else if(t1>=2)

76             {

77                 printf(" popStack popQueue\n");

78             }

79             else if(t1>=1)

80             {

81                 printf(" popStack\n");

82             }

83             while(!q.empty())

84             {

85                 q.pop();

86             }

87         }

88     }

89     return 0;

90 }
View Code

 

你可能感兴趣的:(contain)