Cod sursa(job #1869473)

Utilizator stefzahZaharia Stefan Tudor stefzah Data 5 februarie 2017 20:37:14
Problema Progresii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>
using namespace std;
ifstream fin("progresii.in");
ofstream fout("progresii.out");
long long n,m,j,k,l,i,p[100005],s,sol[100005],ct,m1;
int main()
{fin>>n>>m>>k>>l;
 for(i=1;i<=n;i++)
    {fin>>p[i];
     s=s+l-p[i]+1;
    }
      for(i=n;i>=1;i--)
          {if(s-(l-p[i]+1)+(l-p[i])/m+1>k){ct++;m1=m;while(m1-1>0&&(l-p[i])/m1==(l-p[i])/(m1-1))m1--;sol[ct]=m1;s=s-(l-p[i]+1)+(l-p[i])/m+1;}
           else {s=s-(l-p[i]+1);
                if(k-s-1!=0)m=(l-p[i])/(k-s-1);
                 else {while(m>0&&s+(l-p[i])/m+1<=k)
                            m--;
                            m++;
                      }
                      m1=m;while(m1-1>0&&(l-p[i])/m1==(l-p[i])/(m1-1))m1--;
                 s=k;ct++;sol[ct]=m1;break;
                }
                if(s==k)break;
          }
 for(i=n;i>=1;i--)
    {if(sol[i])fout<<sol[i]<<"\n";
       else fout<<"1\n";
    }
}