Pagini recente » Cod sursa (job #2684918) | Cod sursa (job #219632) | Cod sursa (job #1498262) | Cod sursa (job #2628898) | Cod sursa (job #165159)
Cod sursa(job #165159)
#include<stdio.h>
long long p,u,mij,q,j,s,n,m,k,l,i,x,y;
int v[100101];
int litri ( int m ){
int y;
if(v[i]%m==0)
y=v[i]/m+1;
else
y=v[i]/m;
return y;
}
int main(){
FILE *f=fopen("progresii.in","r");
fscanf(f,"%lld %lld %lld %lld",&n,&m,&k,&l);
for(i=1;i<=n;i++){
fscanf(f,"%lld",&x);
v[i]=l-x+1; //cati metrii parcurge fiecare
if(v[i]%m==0)
y=v[i]/m;
else
y=v[i]/m+1;
s+=y; //s - numarul minim de litrii care se pot consuma
}
fclose(f);
FILE *g=fopen("progresii.out","w");
int S=k;
for(i=1;i<=n;i++){
if(v[i]%m==0)
y=v[i]/m+1;
else
y=v[i]/m;
s-=y;
x=k-s; // x - numarul maxim de litrii care pot fi consumato de persoana i
p=1;
u=m;
while(p<=u){
mij=(p+u)/2;
if( litri(mij)<=x )
u=mij-1;
else
p=mij+1;
}
S-=litri(p);
k=S;
fprintf(g,"%lld\n",p);
}
fclose(g);
return 0;
}