Member 13970073 Ответов: 1

Может ли кто-нибудь решить этот вопрос


Вход:4
Вход: 4 2 3 6
Выход :29
Пояснение:отсортируйте массив, а затем добавьте 2+3=5 Теперь у нас есть 5 4 6
Далее мы добавляем 5+4=9 теперь у нас есть 9 и 6
затем мы добавляем 9+6=15 и, наконец, возвращаем 29 В качестве решения, которое является суммой 5+9+15=29
Я должен написать код для того же самого.

Что я уже пробовал:

<pre>#include<bits/stdc++.h>
using namespace std;
int main()
{
int num;
cin>>num;
vector<int> box;
for(int i=0;i<num;i++)
{
int temp;    
cin>>temp;
box.push_back(temp);
}
sort(box.begin(),box.end());
vector<int> res;
int sum=box[0];
if(box.size()==1)
{
cout<<sum;    
}
else{
for(int i=1;i<box.size();i++)
{
sum=sum+box[i];
res[i]=sum;
}
res[0]=0;
int result=0;
for(int i=0;i<res.size();i++)
{
result+=res[i];    
}
cout<<result;
}

    
}

OriginalGriff

И что же?
Что он делает такого, чего вы не ожидали, или не делает того, что вы сделали?
Что вы пытались выяснить, почему?
Есть сообщения об ошибках?
Где ты застрял?
Какая помощь вам нужна?

1 Ответов

Рейтинг:
6

CPallini

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

int main()
{
  size_t num;
  cin >> num;
  vector<int> box;

  if (num < 1) return -1;

  box.resize(num);

  for(auto & x : box)
    cin >> x;

  sort(box.begin(), box.end());

  vector<int> res;

  int sum = box[0];

  for (size_t i=1; i<num; ++i)
  {
    sum += box[i];
    res.push_back(sum);
  }

  cout << accumulate(res.begin(), res.end(), 0) << endl;
}


KarstenK

Хорошая домашняя работа ;-)