Помогите пожалуйста, нужен код, свой алгоритм не проходит все тесты((( срочно!
I. Чётно-нечётное (Teens)
ограничение по времени на тест1 s.
ограничение по памяти на тест256 MB
вводstandard input
выводstandard output
Программист Вася хочет купить автомобиль. На автосайте представлен широкий выбор различных машин.
Вася предпочитает машину с самым мощным мотором. Если таких машин больше одной, то среди них он предпочитает самую экономичную (по расходу топлива) модель. Если и таких машин несколько, то Вася выбрал бы из них самую дешевую.
Из предложенных машин Вася создал список, упорядоченный по возрастанию привлекательности машины, и всё-таки решил, что купит машину, расположившуюся в медиане получившегося списка. Помогите Васе определить номер такой машины.
Медианой массива размера n
называют величину, стоящую под номером n2
, если n
чётное, и n2+1
, если n
нечётное (деление целочисленное).
Входные данные
В первой строке задано целое число n
(1≤n≤104)
— колчество машин на автосайте.
В следующих n
строках заданы числа ai
, bi
, ci
(1≤ai≤300,1≤bi≤30,1≤ci≤104)
— мощность двигателя, расход топлива и стоимость i
-й машины соответственно.
Выходные данные
Выведите единственное целое число — номер машины, которую купить Вася.
Пример
входные данныеСкопировать
7
170 20 5000
160 18 4500
170 22 4200
165 20 4000
170 20 5500
170 20 6000
170 25 4100
выходные данныеСкопировать
3
сам код
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n;
int r;
bool camp(vector<int>& a, vector<int>& b) {
return a[0] < b[0];
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n;
vector <vector<int>> a(n, vector<int>(4));
for (int i = 0; i < n; i++) {
cin >> a[i][0];
cin >> a[i][1];
cin >> a[i][2];
a[i][3] = i + 1;
}
vector <vector<int>> b(n, vector<int>(4));
b = a;
sort(b.begin(), b.end(), greater<>());
sort(b.begin(), b.end(), camp);
/*cout << "\n";
for (int i = 0; i < n; i++) {
cout << b[i][0] << " ";
cout << b[i][1] << " ";
cout << b[i][2] << " ";
cout << b[i][3] << " ";
cout << "\n";
}*/
if (n % 2 == 1) {
r = n / 2 + 1;
}
else {
r = n / 2;
}
cout << b[r - 1][3];
return 0;
}
#include <iostream>
#include <algorithm>
#include <vector>
struct car
{
short pow;
short con;
short pri;
short num;
bool operator < (const car& an) const
{
return pow == an.pow ? con == an.con ? pri > an.pri : con > an.con : pow < an.pow;
}
};
int main()
{
int n;
std::cin >> n;
std::vector<car> cars(n);
for (int i = 0; i < n; i++)
{
std::cin >> cars[i].pow >> cars[i].con >> cars[i].pri; cars[i].num = i + 1;
}
std::sort(cars.begin(), cars.end());
std::cout << cars[n / 2 + (n%2==0)].num;
}
в условии неточность n/2 если нечетное, n/2+1 если четное
Сортировать нужно по 3-м параметрам одновременно. В остальном - все выглядит более-менее кошерно.
Нет