বৃহস্পতিবার, ২৪ মে, ২০১২

Solution of Light Online Judge 1249 - Chocolate Thief

        Problem টির Category হল Beginers Level . So যারা programming এর জগতে উঁকি দিতে আরম্ভ করেছ তাদের জন্য এই সমস্যাটি অনায়াসে Solve করে ফেলার মত । চল দেখা যাক আসলে এই সমস্যাটিতে কি জানতে চাওয়া হচ্ছে ।
        প্রথমে আমরা নজর দিব Sample Input/Output এর দিকে । আমি যদি সবার চকলেট এর আয়তন বের করি তাহলে অনেকটা নিচের মত দেখাবে ।
      
                                                 চকলেটের আয়তন
     atq 3 4 3  -----   ৩৬       
     mun 10 4 1 -----   ৪০
     sam1 6 6 1 -----   ৩৬
     sam2 18 2 1 -----  ৩৬
     mub 1 36 1 ------  ৩৬
     tan 1 4 9  ------  ৩৬
     sha 4 3 3  ------  ৩৬
     di 3 12 1  ------  ৩৬
     nab 2 2 9  ------  ৩৬
     all 8 4 1  ------  ৩৬
     fah 3 2 6  ------  ৩৬

তাহলে  চকলেট এর আয়তন অনুযায়ী যদি আমি সবাইকে Sort করে ফেলি তবে তা অনেকটা নিচের মত দেখাবে ।

                                              চকলেটের আয়তন

     all 8 4 1  ------  ৩২
     atq 3 4 3  -----   ৩৬       
     sam1 6 6 1 -----   ৩৬
     sam2 18 2 1 -----  ৩৬
     mub 1 36 1 ------  ৩৬
     tan 1 4 9  ------  ৩৬
     sha 4 3 3  ------  ৩৬
     di 3 12 1  ------  ৩৬
     nab 2 2 9  ------  ৩৬
     fah 3 2 6  ------  ৩৬
    
mun 10 4 1 -----   ৪০

      এ হতে দেখা যাচ্ছে যে সর্বনিন্ম মান হল ৩২ এবং সর্বোচ্চ মান হল ৪০ । যেহেতু মান দুইতি সমান নয় কাজেই mun
চকলেট চুরি করেছে  all হতে ।

     এখনও যারা বুজতে পারনি সমস্যাটি কিভাবে সমাধান করবে জন্যই বলছি সমস্যাটিতে আসলে জানতে চাওয়া হচ্ছে একটি array এর
সর্বোচ্চ ও সর্বনিন্ম মান বের করতে হবে । যদি তারা সমান হয় তাহলে চুরি হয়নি । আর তা না হলে চুরি হয়েছে । Simple , তাই না ?

Code:

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;

class People
{
public:
    int a;
    string nme;
    People(string a ,int n):nme(a),a(n){}
    People();
};

bool cmp(People A,People B)
{
    return A.a < B.a ;
}


int main()
{
    int j,n,t1,t2,t3,i,test;
    string a;
    vector<People> pp;
    cin>>test;
    for(i=1;i<=test;i++)
    {
        cin>>n;
        for(j=0;j<n;j++)
        {
            cin>>a>>t1>>t2>>t3;
            pp.push_back( People(a,t1*t2*t3) ) ;
        }
        sort(pp.begin(),pp.end(),cmp);
        if( pp[0].a == pp[pp.size()-1].a )
            cout<<"Case "<<i<<": no thief"<<endl;
        else
            cout<<"Case "<<i<<": "<<pp[0].nme<<" took chocolate from "<<pp[pp.size()-1].nme<<endl;
    }

    return 0;
}
     
    

কোন মন্তব্য নেই:

একটি মন্তব্য পোস্ট করুন