কেন একসেপ্ট হচ্ছে না বুঝতে পারছি না। রং আনসার দেখাচ্ছে। ভুলটা বের করতে পারছি না।

আমার কোডঃ

 #include <stdio.h>
 int main()
 {
     int n,j,i,k,a[5001],temp;
     for(i=0;1;i++)
     {
         long long int sum=0;
         long long int cost=0;
         scanf("%d",&n);
         if(n==0)
         {
             break;
         }
         for(j=1;j<=n;j++)
         {
             scanf("%d",&a[j]);
         }
         for(j=1;j<n;j++)
         {
             for(k=j+1;k<=n;k++)
             {
                 if(a[k]<a[j])
                 {
                     temp=a[j];
                     a[j]=a[k];
                     a[k]=temp;
                 }
             }
         }
         sum=a[2]+a[1];
         cost+=sum;
         for(j=3;j<=n;j++)
         {
             sum+=a[j];
             cost+=sum;
         }
         printf("%lld\n",cost);
     }
     return 0;
 }
প্রশ্নঃ
Addition operation requires cost now, and the cost is the summation of those two to be added. So, to add 1 and 10, you need a cost of 11. If you want to add 1, 2 and 3. There are several ways
1 + 2 = 3, cost = 3
1 + 3 = 4, cost = 4
2 + 3 = 5, cost = 5
3 + 3 = 6, cost = 6
2 + 4 = 6, cost = 6
1 + 5 = 6, cost = 6
Total = 9
Total = 10
Total = 11
I hope you have understood already your mission, to add a set of integers so that the cost is minimal.

Input

Each test case will start with a positive number, N (2 ≤ N ≤ 5000) followed by N positive integers (all are less than 100000). Input is terminated by a case where the value of N is zero. This case should not be processed.

Output

For each case print the minimum total cost of addition in a single line.

Sample Input

3
1 2 3
4
1 2 3 4
0

Sample Output

9
19

asked 26 Nov, 15:02

nishat's gravatar image

nishat
615

edited 27 Nov, 16:31


5
3 3 3 4 4

এই টেস্ট কেসের জন্যে আপনার আউটপুট দিচ্ছে ৪৫ কিন্তু সঠিক আউটপুট হবে ৪০ । আপনি শুধু একবার সর্ট করছেন কিন্তু এই প্রব্লেমে প্রতিবার যোগ করার পর সর্ট করতে হবে । কারণ এখানে মিনিমাম রেজাল্ট চাইছে । যখন

3 + 3

করছে এর পর অ্যারে টা দাঁড়াচ্ছে

6 3 4 4

এবার আবার সর্ট করতে হবে এবং ৩ ও ৪ যোগ করতে হবে কিন্তু আপনি ৬ ও ৩ যোগ করছেন তাই ভুল আউটপুট দিচ্ছে । আর হ্যাঁ আপনি এখানে বাবল সর্ট ব্যবহার করছেন । কিন্তু প্রতিবার এই সর্ট ব্যবহার করলে টাইম লিমিট পাবেন তাই অন্য কোন ইফিসিয়েন্ট সর্ট ব্যবহার করিয়েন । আপনি C++ এর STL এর ব্যবহার জানলে priority queue দিয়েও সহজে এটা করতে পারেন ।

হ্যাপি কোডিং

permanent link

answered 28 Nov, 14:18

Return_Zero's gravatar image

Return_Zero
1356

edited 28 Nov, 14:41

বারবার সর্ট করতে গেলে কি সি দিয়ে কোড টা অনেক বেশি কঠিন হয়ে যাবে কি? প্রত্যেক বার অ্যারে সাইজ ও তো ১ করে কমবে :'( আমি সি++ পারি না,শুধু সি পারি :(

(30 Nov, 08:24) nishat
1

মার্জ কিংবা কুইক সর্ট ব্যবহার করতে পারেন । অথবা সিলেকশন সর্ট ও কাজ করার কথা যদিও আমি শিউর না ।আর হ্যাঁ সি তে এই সব সর্ট ইমপ্লিমেন্ট করা যদিও একটু ঝামেলার তবে এটা শিখা উচিত ।

(30 Nov, 18:34) Return_Zero
Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×355
×78
×54
×3
×1

question asked: 26 Nov, 15:02

question was seen: 119 times

last updated: 30 Nov, 18:37