Pagini recente » Cod sursa (job #2881527) | Cod sursa (job #2932700) | Cod sursa (job #1466371) | Cod sursa (job #255756) | Cod sursa (job #2500035)
#include <iostream>
#define int long long
using namespace std;
//ifstream cin("uscat.in");
//ofstream cout("uscat.out");
int n,a[100005],x;
//sumt=nr*n-nr+x*nr
bool verif(int m)
{
long long t=0;
for(int i=1;i<=n;++i){
if(a[i]>m)
t+=(a[i]-m)/(x-1)+((a[i]-m)%(x-1));
}
if(t>m)
return 1;
else
return 0;
}
main()
{
int i,pans=-1;
cin>>n;
for(i=1;i<=n;++i)
cin>>a[i],pans=max(pans,a[i]);
cin>>x;
if(x==1)
{
cout<<pans;
return 0;
}
int msk=1<<20,pos=0;
for(;msk;msk/=2)
{
if(verif(pos+msk)==1)
pos+=msk;
}
cout<<pos+1;
/* int z=0;
while(1)
{ bool da=0;
++z;
int pozm,maxx=-1;
for(i=1;i<=n;++i)
{
if(maxx<a[i])
maxx=a[i],pozm=i;
}
for(i=1;i<=n;++i)
{
a[i]--;
if(a[i]>0&&i!=pozm) da=1;
}
a[pozm]-=(x-1);
if(a[pozm]>0)
da=1;
if(da==0)
break;
}
cout<<z;*/
return 0;
}