Loading [MathJax]/jax/output/SVG/jax.js

Районная олимпиада по информатике. 2008-2009 учебный год.


Задача C. Выгода

Ограничение по времени:
2 seconds
Ограничение по памяти:
64 megabytes

Компьютер состоит из процессорного блока и монитора. На складе имеется N системных блоков и M мониторов. i-й блок стоит Ai тугриков, j-й монитор – Bj тугриков. Из-за мирового финансового кризиса, стоимость компьютера, в состав которого входит i-й системный блок и j-й монитор равна AiBj (умножение) тугриков. Вам надо собрать наибольшее возможное количество компьютеров так, чтобы их суммарная стоимость была максимально возможной.
Формат входного файла
Первая строка входного файла содержит два целых числа: N и M (1<=N,M<=1000). Вторая строка содержит N целых чисел: i-е число в строке – это Ai. Третья строка содержит M целых чисел: j-е число в строке – это Bj. (1<=Ai,Bj<=1000). Числа в строках разделены пробелами.
Формат выходного файла
Выходной файл должен содержать два целых числа, разделенных пробелом – максимально возможное число компьютеров и их максимальную суммарную стоимость.
Примеры:
Вход
3 2
1 2 3
4 5
Ответ
2 23
посмотреть в олимпиаде

Комментарий/решение:

  0
6 года 4 месяца назад #

показать/скрыть код

C++

пред. Правка 2   0
3 года 2 месяца назад #

DELETED

  0
3 года 3 месяца назад #

#include<bits/stdc++.h>

using namespace std;

int main()

{

ios_base::sync_with_stdio;

cin.tie(0);

cout.tie(0);

int cal=0;

int n,m;

cin>>n>>m;

vector <int> vec1;

vector <int> vec2;

for(int i=0;i<n;i++)

{

int a;

cin>>a;

vec1.push_back(a);

}

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

for(int i=0;i<m;i++)

{

int a;

cin>>a;

vec2.push_back(a);

}

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

if(vec1.size()>vec2.size())

{

while(vec1.size()>vec2.size()){

int i=0;

vec1.erase(vec1.begin() + 0);

}

for(int i=0;i<vec1.size();i++){

cal=cal+vec1[i]*vec2[i];

}

cout<<vec1.size()<<" "<<cal;

}

else if(vec2.size()>vec1.size())

{

while(vec2.size()>vec1.size()){

int i=0;

vec2.erase(vec2.begin() + 0);

}

for(int i=0;i<vec2.size();i++){

cal=cal+vec2[i]*vec1[i];

}

cout<<vec1.size()<<" "<<cal;

}

else

{

for(int i=0;i<vec2.size();i++){

cal=cal+vec2[i]*vec1[i];

}

cout<<vec1.size()<<" "<<cal;

}

}

  0
3 года 2 месяца назад #

показать/скрыть код

C++