Районная олимпиада по информатике. 2008-2009 учебный год.
Задача C. Выгода
Компьютер состоит из процессорного блока и монитора. На складе имеется $N$ системных блоков и $M$ мониторов. i-й блок стоит $A_i$ тугриков, j-й монитор – $B_j$ тугриков. Из-за мирового финансового кризиса, стоимость компьютера, в состав которого входит i-й системный блок и j-й монитор равна $A_i$ ∙ $B_j$ (умножение) тугриков. Вам надо собрать наибольшее возможное количество компьютеров так, чтобы их суммарная стоимость была максимально возможной.
3 2 1 2 3 4 5Ответ
2 23
Комментарий/решение:
#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;
}
}
Возможно, что при неправильном наборе формул, они будут
доредактированы модератором. При этом содержание не будет меняться.