Pagini recente » Cod sursa (job #2696036) | Cod sursa (job #1015212) | Cod sursa (job #1047156) | Cod sursa (job #63988) | Cod sursa (job #1851161)
#include<fstream>
using namespace std;
ifstream fin("progresii.in");
ofstream fout("progresii.out");
int n, m, st, dr, mid;
long long k, d, suc;
int v[100005], sol[100005];
int main(){
fin >> n >> m >> k >> d;
suc = 0;
for( int i = 1; i <= n; i++ ){
fin >> v[i];
suc += ( d - v[i] + 1 );
sol[i] = 1;
}
int p = n;
while( suc > k && p >= 1 ){
suc = suc - ( d - v[p] + 1 ) + ( d - v[p] + 1 ) / m + 1;
sol[p] = n;
p--;
}
if( suc > k ){
fout << "-1";
return 0;
}
p++;
st = 1;
dr = m;
while( st <= dr ){
mid = ( st + dr ) / 2;
if( suc - ( ( d - v[p] + 1 ) / m + 1 ) + ( d - v[p] + 1 ) / mid + 1 <= k ){
dr = mid - 1;
}else{
st = mid + 1;
}
}
sol[p] = dr;
for( int i = 1; i <= n; i++ ){
fout << sol[i] << "\n";
}
return 0;
}