Friday, November 4, 2016

Lightoj-1212 - Double Ended Queue


 
The simple deque implementation problem.

C++ Code (STL deque).

#include<bits/stdc++.h>
#define file freopen("lightoj.txt","rt",stdin)
using namespace std;

int main()
{
  //  file;
    deque<int>d;
    string str;
    int n,m,a,val,test;
    cin>>test;
    for(int j=1; j<=test; j++)
    {
        d.clear();

        printf("Case %d:\n",j);
        cin>>n>>m;

        for(int i=1; i<=m; i++)
        {
            cin>>str;
            if(str=="pushLeft")
            {
                cin>>a;
                if(d.size()<n)
                {
                    d.push_front(a);
                    cout<<"Pushed in left: "<<a<<endl;
                }
                else
                    cout<<"The queue is full"<<endl;
            }
            else if(str=="pushRight")
            {
                cin>>a;
                if(d.size()<n)
                {
                    d.push_back(a);
                    cout<<"Pushed in right: "<<a<<endl;
                }
                else
                    cout<<"The queue is full"<<endl;

            }
            else if(str=="popLeft")
            {

                if(!d.empty())
                {
                    val = d.front();
                    d.pop_front();
                    cout<<"Popped from left: "<<val<<endl;
                }
                else
                    cout<<"The queue is empty"<<endl;
            }
            else
            {
                if(!d.empty())
                {
                    val = d.back();
                    cout<<"Popped from right: "<<val<<endl;
                    d.pop_back();
                }
                else
                    cout<<"The queue is empty"<<endl;
            }
        }
    }
    return 0;
}

No comments:

Post a Comment