https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=979
এই সমস্যাটি , ঠিকভাবে বর্ণনা দেওয়া নেই , জাজ-এ এ কারণেই , অনেক কিছুই স্পষ্ট থাকে না অনেকের কাছে , এই সমস্যা নিয়ে ।
যাই হোক , তোমায় একটা - অ্যারে দেওয়া থাকবে , তোমায় সেই উপাদানগুলির পার্থক্য বের করতে হবে , তারপরে সর্ট করতে হবে - এখন যে মান পাবো ,সেটা অবশ্যই ১ হতে যে কয়টা উপাদান থাকবে অ্যারে'তে তার চেয়ে এক কম অবদি থাকতে হবে ।
চলো , একটা উদাহরণ দেই - তাহলে বিষয়টা ক্লিয়ার হবে , আমাদের কাছে
ধরো , অ্যারে'তে 4 টি মান দেয়া আছে , 1 4 2 3
তাহলে ডিফারেন্স গুলো হবে 3 2 1 তাই না ???
অ্যারে'তে কয়টি মান দেইয়া ছিলো ?? 4 টি, এখন এই 4 থেকে 1 বিয়োগ করলে কতো হয় ?? 3, তাই না ?? হুম , তাহলে 1 থেকে 3 অবদি সব সংখ্যা কি ??? ওই ডিফারেন্স এর যে লিস্ট বানাইছি , সেটাতে আছে ?? ডিফারেন্স এর লিস্ট এ আছে 3 2 1 , এর মানে 1 থেকে 3 অবদি সব সংখ্যা এই ডিফারেন্স লিস্টেই আছে , সুতরাং এটা জলি জাম্বার ।
#include<algorithm>
#include<cmath>
#include<cstdio>
using namespace std;
int n;
int ar[3100], dar[3100];
int main() {
while(scanf("%d", &n) == 1) {
bool joy=true;
for(int i = 0; i < n; i++){
scanf("%d", &ar[i]);
}
for(int i = 0; i < n - 1; i++){
dar[i] = abs(ar[i + 1] - ar[i]);
}
sort(dar, dar + n - 1);
for(int i = 0; i < n - 1; i++)
if(dar[i] != i + 1) {
joy=false;
}
if(joy==false){
printf("Not jolly\n");
}
else{
printf("Jolly\n");
}
}
return 0;
}
এই সমস্যাটি , ঠিকভাবে বর্ণনা দেওয়া নেই , জাজ-এ এ কারণেই , অনেক কিছুই স্পষ্ট থাকে না অনেকের কাছে , এই সমস্যা নিয়ে ।
যাই হোক , তোমায় একটা - অ্যারে দেওয়া থাকবে , তোমায় সেই উপাদানগুলির পার্থক্য বের করতে হবে , তারপরে সর্ট করতে হবে - এখন যে মান পাবো ,সেটা অবশ্যই ১ হতে যে কয়টা উপাদান থাকবে অ্যারে'তে তার চেয়ে এক কম অবদি থাকতে হবে ।
চলো , একটা উদাহরণ দেই - তাহলে বিষয়টা ক্লিয়ার হবে , আমাদের কাছে
ধরো , অ্যারে'তে 4 টি মান দেয়া আছে , 1 4 2 3
তাহলে ডিফারেন্স গুলো হবে 3 2 1 তাই না ???
অ্যারে'তে কয়টি মান দেইয়া ছিলো ?? 4 টি, এখন এই 4 থেকে 1 বিয়োগ করলে কতো হয় ?? 3, তাই না ?? হুম , তাহলে 1 থেকে 3 অবদি সব সংখ্যা কি ??? ওই ডিফারেন্স এর যে লিস্ট বানাইছি , সেটাতে আছে ?? ডিফারেন্স এর লিস্ট এ আছে 3 2 1 , এর মানে 1 থেকে 3 অবদি সব সংখ্যা এই ডিফারেন্স লিস্টেই আছে , সুতরাং এটা জলি জাম্বার ।
#include<algorithm>
#include<cmath>
#include<cstdio>
using namespace std;
int n;
int ar[3100], dar[3100];
int main() {
while(scanf("%d", &n) == 1) {
bool joy=true;
for(int i = 0; i < n; i++){
scanf("%d", &ar[i]);
}
for(int i = 0; i < n - 1; i++){
dar[i] = abs(ar[i + 1] - ar[i]);
}
sort(dar, dar + n - 1);
for(int i = 0; i < n - 1; i++)
if(dar[i] != i + 1) {
joy=false;
}
if(joy==false){
printf("Not jolly\n");
}
else{
printf("Jolly\n");
}
}
return 0;
}
অনেক জায়গায় দেখেও এই প্রব্লেমটির লজিক ভালো ভাবে বুঝতে পারি নাই। কিন্তু আপনি খুবই সহজ করে ব্যাখ্যা করে দিয়েছেন প্রব্লেমটি।
ReplyDeleteঅসংখ্য ধন্যবাদ আপনাকে স্যার।
Thank you.
ReplyDeleteAfter a long time. Understood
#include
ReplyDelete#include
using namespace std;
int main()
{
int n;
//cin>>n;
while(cin>>n)
{
int a[n+1];
for(int i=0;i>a[i];
}
int diff[n+1];
for(int i=0;i<n-1;i++)
{
diff[i]=abs(a[i+1]-a[i]);
// cout<<diff[i]<<" ";
}
//cout<<endl;
sort(diff,diff+(n-1));
/*for(int i=0;i<n-1;i++)
{
cout<<diff[i]<<" ";
}
cout<<endl;*/
int count;
for(int i=0;i<n-1;i++)
{
count=0;
if(diff[i]==(i+1))
{
count=1;
}
}
if(count==1)
{
cout<<"Jolly"<<endl;
}
else cout<<"Not jolly"<<endl;
}
return 0;
}
where is the problem ??
it's getting WA...
please help