3-й этап Республиканской олимпиады по информатике 2022-2023, 1й тур


Есеп B. Балмұздақтың бағасы

Ограничение по времени:
1 second
Ограничение по памяти:
256 megabytes

Сіз балмұздақ сатасыз. Балмұздақтың өзіндік құны $k$ теңге. Ол дегеніміз, егер балмұздақты $x$ теңгеден сатсаныз, онда әр балмұздақтан табатын табысыңыз $x - k$ теңге болады. $n$ клиент бар. Әр клиент $i$ үшін оның балмұздаққа $s_i$ теңге құрта алатыны белгілі. Әр клиент қанша балмұздаққа ақшасы жетеді, соншама балмұздақ сатып алады. Өзіңіздің табысыңыз барынша көп болатындай балмұздақтын бағасын таңдаңыз.
Формат входного файла
Бірінші жолда екі бүтін $n,k$($1 <= n <= 2 \cdot 10^5$, $0 <= k <= 10^6$) — клиенттер саны және бір балмұздақтың өзіндің құны. Екінші жолда $n$ бүтін сан $s_1, s_2, \cdots, s_n$($1 <= s_i <= 10^6$) беріледі.
Формат выходного файла
Ең көп қанша пайда алатыңызды шығарыңыз.
Примеры:
Вход
5 2
8 9 10 15 12
Ответ
30
Вход
3 20
15 10 20
Ответ
0
Замечание
Бірінші мысалда балмұздақтың бағасын $7$ теңге қойған тиімдірек. Онда төртінші клиент 2 балмұздақ сатып алады, ал қалғандары бір бірден алады. Барлығы 6 балмұздақ сатылады. Әр балмұздақтан келетін табыс $5$($7 - 2$) теңге, онда барлығы $6 \cdot 5 = 30$ теңге пайда болады. ( Temirlan Satylkhanov )
посмотреть в олимпиаде

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

  0
2024-12-26 17:17:43.0 #

как это решается

  0
2024-12-26 19:26:42.0 #

//C.RONALDO IS G.O.A.T

//user91571@outlook.com

//A2010

#include <bits/stdc++.h>

#define sed s.erase(unique(s.begin(),s.end()),s.end());

#define ll long long

#define sem s.emplace("To",3)

#define fi first

#define se second

#define aufi auto it = arr.find("To")

#define auer auto it = arr.erase("To")

#define cous count(s.begin(),s.end(),'N')

#define ios ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);

#define ser s.erase(remove(s.begin(),s.end(),' '),s.end());

#define KOE vector<tuple<int,int,int>> v;

using namespace std;

using ld=long double;

const ll MOD=998244353;

const ll N=3e5+10;

const ll inf=1e18;

int d[N];

int f[N];

vector<int>g[N];

int used[N];

void dfs(int v) {

used[v]=1;

for(auto to:g[v]){

if(!used[to]){

dfs(to);

}

}

}

/*ll funct(ll a){

ll s=0;

while(a!=0){

s+=a%!;

a/=!;

}

return s;

}*/

int gcd(int a,int b) {

if(b==0) return a;

return gcd(b,a%b);

}

void solve() {

string english_alphabet="abcdefghijklmnopqrstuvwxyz";

ll a,b;

cin>>a>>b;

for(int i=0;i<a;i++){

cin>>d[i];

}

ll mn=*min_element(d,d+a);

ll mx=*max_element(d,d+a);

if(b>=mx) cout<<"0\n";

else{

ll mxi=0;

ll sum=0;

while(b<mn){

for(ll i=0;i<a;i++){

sum+=d[i]/mn;

}

mxi=max(mxi,sum*(mn-b));

mn--;

sum=0;

}

cout<<mxi<<'\n';

}

}

int main() {

ios

//freopen("dining.in", "r", stdin);

//freopen("dining.out", "w", stdout);

int tt=1;

//cin>>tt;

while(tt--) {

solve();

}

}

почему не правильно на 5 тесте

  0
2024-12-26 19:27:35.0 #

кодты корсету/жасыру

//C.RONALDO IS G.O.A.T

//user91571@outlook.com

//A2010

#include <bits/stdc++.h>

#define sed s.erase(unique(s.begin(),s.end()),s.end());

#define ll long long

#define sem s.emplace("To",3)

#define fi first

#define se second

#define aufi auto it = arr.find("To")

#define auer auto it = arr.erase("To")

#define cous count(s.begin(),s.end(),'N')

#define ios ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);

#define ser s.erase(remove(s.begin(),s.end(),' '),s.end());

#define KOE vector<tuple<int,int,int>> v;

using namespace std;

using ld=long double;

const ll MOD=998244353;

const ll N=3e5+10;

const ll inf=1e18;

int d[N];

int f[N];

vector<int>g[N];

int used[N];

void dfs(int v) {

used[v]=1;

for(auto to:g[v]){

if(!used[to]){

dfs(to);

}

}

}

/*ll funct(ll a){

ll s=0;

while(a!=0){

s+=a%!;

a/=!;

}

return s;

}*/

int gcd(int a,int b) {

if(b==0) return a;

return gcd(b,a%b);

}

void solve() {

string english_alphabet="abcdefghijklmnopqrstuvwxyz";

ll a,b;

cin>>a>>b;

for(int i=0;i<a;i++){

cin>>d[i];

}

ll mn=*min_element(d,d+a);

ll mx=*max_element(d,d+a);

if(b>=mx) cout<<"0\n";

else{

ll mxi=0;

ll sum=0;

while(b<mn){

for(ll i=0;i<a;i++){

sum+=d[i]/mn;

}

mxi=max(mxi,sum*(mn-b));

mn--;

sum=0;

}

cout<<mxi<<'\n';

}

}

int main() {

ios

//freopen("dining.in", "r", stdin);

//freopen("dining.out", "w", stdout);

int tt=1;

//cin>>tt;

while(tt--) {

solve();

}

}

  0
2024-12-26 20:51:59.0 #

кодты корсету/жасыру