Monday, August 24, 2015

Hackerearth Comrades - III Solution

#include  <iostream>
#include  <map>
#include   <utility>
using namespace std;

int main()
{  
    int total=0;
    int inp,inp1,inp2,orders,count;
   
    multimap<int,pair<int,int>> soldiers;
    multimap<int,pair<int,int>>::iterator it,itr;
    pair<multimap<int, pair<int,int> >::iterator, multimap<int, pair<int,int> >::iterator> ppp;

    cin>>total;
   
    //read the soldiers
    for(int i=1;i<total+1;i++)
    {  
    cin >> inp;
    soldiers.insert(make_pair(inp, pair<int,int>(i, 1)));
    //soldiers[inp]= pair<int,int>(i, 1) ;
    }
   
    //cout<< "size"<<soldiers.size()<<endl;
    cin >> orders;
     //int total=soldiers.count(inp2);
    for(int j=1; j<orders+1; j++)
    {
    cin >>inp1;
    cin >>inp2;
    //cout << inp1 <<":"<<inp2<<"count"<<soldiers.count(inp2)<<endl;
   
    switch(inp1)
    {  
   
    case 1:
   
          //cout<<"inside 1:"<<endl;
          ppp = soldiers.equal_range(inp2);
          for (itr = ppp.first;itr != ppp.second;itr++)
               {      
                    ((*itr).second).second =1 ;
                         
               }
      break;
           
    case 2:
   
          //cout<<"inside 2:"<<endl;
          ppp = soldiers.equal_range(inp2);
          for (itr = ppp.first;itr != ppp.second;itr++)
               {      
                    ((*itr).second).second =0 ;
                         
               }
       
      break;
    case 3:
         
          //cout<<"inside 3"<<endl;
          count=0;
          ppp = soldiers.equal_range(inp2);
          for (itr = ppp.first;itr != ppp.second;itr++)
               {      
                    if(  ((*itr).second).second ==1  )
                     count++;    
               }
         cout<<count<<endl;
       
        break;
    }
   
   
      }
   
   
    return 0;
}

No comments:

Post a Comment