প্রশ্নঃ ১২,১৭,৫,৭,১৯ এই সংখ্যা গুলো কোন রাস্তার বিভিন্ন স্থান/দুরুত্ত নির্দেশকরে। রাস্তাটি সরল/ সজা। একাটা বিন্দু/ স্থান ১০ দেওয়া হল । সেই বিন্দু টা সহ কিন্তু অবশ্যই যে কোন একটি বিন্দু বাদ দিয়া সর্ব নিম্ন কম দুরুত্তে বাকি সকল বিন্দু দিয়ে কি ভাবে আসা যায়?
সমাধানঃ
ডাটা গূলোকে আগে শর্ট কোড়ে নেই।
যথা ৫,৭,১২,১৭,১৯
আচ্ছা এখন যদি ১০ থেকে ১০ এর কাছাকাছী ডাটা ১২,১২ থেকে ৫, ৫ থেকে ৭,৭ থেকে ১৭ তে আসতে পারি তাই না । কিন্তু খেয়াল করলে দেকবে যে ১২ তে ২ বাড় আসতে হয়েছে। সুতরাং শর্ট করার পর যে কোনো এক দিক থেকে গেলে কোণো ডাটাতে একবার এর বেশী যাওয়ার প্রয়োজন পরবেনা ।
অর্থাৎ ১২ থেকে ৫ ,৫ থেকে ১৭ এর দিকে অথবা ১২ থেকে ১৯ ,১৯ থেকে ৭ এর দিকে আসতে হবে
এবার প্রব্লেম টা দেওয়া হলঃ
Problem:http://codeforces.com/contest/709/problem/B
Code:
#include<bits/stdc++.h>
using namespace std;
long long ar[1000009];
int main()
{
long long n,a,i;
while(cin>>n>>a)
{
for(i=0; i<n; i++)
cin>>ar[i];
if(n==1)
{
cout<<0<<endl;
}
else
{
sort(ar,ar+n);
cout<<min(min(abs(a-ar[0]),abs(ar[n-2]-a))+ar[n-2]-ar[0],min(abs(ar[n-1]-a),abs(ar[1]-a))+ar[n-1]-ar[1])<<endl;
}
}
return 0;
}
সমাধানঃ
ডাটা গূলোকে আগে শর্ট কোড়ে নেই।
যথা ৫,৭,১২,১৭,১৯
আচ্ছা এখন যদি ১০ থেকে ১০ এর কাছাকাছী ডাটা ১২,১২ থেকে ৫, ৫ থেকে ৭,৭ থেকে ১৭ তে আসতে পারি তাই না । কিন্তু খেয়াল করলে দেকবে যে ১২ তে ২ বাড় আসতে হয়েছে। সুতরাং শর্ট করার পর যে কোনো এক দিক থেকে গেলে কোণো ডাটাতে একবার এর বেশী যাওয়ার প্রয়োজন পরবেনা ।
অর্থাৎ ১২ থেকে ৫ ,৫ থেকে ১৭ এর দিকে অথবা ১২ থেকে ১৯ ,১৯ থেকে ৭ এর দিকে আসতে হবে
এবার প্রব্লেম টা দেওয়া হলঃ
Problem:http://codeforces.com/contest/709/problem/B
Code:
#include<bits/stdc++.h>
using namespace std;
long long ar[1000009];
int main()
{
long long n,a,i;
while(cin>>n>>a)
{
for(i=0; i<n; i++)
cin>>ar[i];
if(n==1)
{
cout<<0<<endl;
}
else
{
sort(ar,ar+n);
cout<<min(min(abs(a-ar[0]),abs(ar[n-2]-a))+ar[n-2]-ar[0],min(abs(ar[n-1]-a),abs(ar[1]-a))+ar[n-1]-ar[1])<<endl;
}
}
return 0;
}
No comments:
Post a Comment