Problem টির Category হল Beginers Level . So যারা programming এর জগতে উঁকি দিতে আরম্ভ করেছ তাদের জন্য এই সমস্যাটি অনায়াসে Solve করে ফেলার মত । চল দেখা যাক আসলে এই সমস্যাটিতে কি জানতে চাওয়া হচ্ছে ।
প্রথমে আমরা নজর দিব Sample Input/Output এর দিকে । আমি যদি সবার চকলেট এর আয়তন বের করি তাহলে অনেকটা নিচের মত দেখাবে ।
চকলেটের আয়তন
তাহলে চকলেট এর আয়তন অনুযায়ী যদি আমি সবাইকে Sort করে ফেলি তবে তা অনেকটা নিচের মত দেখাবে ।
চকলেটের আয়তন
প্রথমে আমরা নজর দিব 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;
}
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;
}
কোন মন্তব্য নেই:
একটি মন্তব্য পোস্ট করুন