Районная олимпиада по информатике. 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;
}
}
Возможно, что при неправильном наборе формул, они будут
доредактированы модератором. При этом содержание не будет меняться.