Pagini recente » Cod sursa (job #441782) | Cod sursa (job #3285399) | Cod sursa (job #356337) | Cod sursa (job #1450825) | Cod sursa (job #165140)
Cod sursa(job #165140)
#include<stdio.h>
long long q,j,s,n,m,k,l,i,x,y;
long long v[100101];
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;
else
y=v[i]/m+1;
s-=y;
x=k-s; // x - numarul maxim de litrii care pot fi consumato de persoana i
q=v[i]/x;
if(q>m)q=m;
if(q==0)q=1;
for(j=q;j<=m;j++){ // cautam cel mai mic j (vit persoane i)
if(v[i]%j!=0)
y=(v[i]/j)+1;
else
y=(v[i]/j);
if(S-(y)>=s)
break;
}
S-=y;
k=S;
fprintf(g,"%lld\n",j);
}
fclose(g);
return 0;
}