Cod sursa(job #1852593)

Utilizator catalinrebegeaUNIBUC-Claudia Catarig catalinrebegea Data 20 ianuarie 2017 22:51:49
Problema Progresii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>
#define Nmax 100005

using namespace std;

int n,m;
long long k,L,d[Nmax],sum[Nmax];

int main()
{
    int i;
    long long x;
    ifstream cin("progresii.in");
    ofstream cout("progresii.out");
    cin>>n>>m>>k>>L;
    for(i=1;i<=n;++i)
    {
        cin>>d[i]; d[i]=L-d[i];
    }
    for(i=n;i;--i)
    {
        sum[i]=sum[i+1]+d[i]/m;
        if(sum[i]>k-n)
        {
            cout<<"-1\n";
            return 0;
        }
    }
    k-=n;
    for(i=1;i<=n;++i)
    {
        if(k==sum[i+1]) x=d[i]+1;
        else
        {
            x=max(1LL,d[i]/(k-sum[i+1]));
            //while(d[i]/x > k-sum[i+1]) ++x;
            //while(x>1 && d[i]/(x-1) <= k-sum[i+1]) --x;
        }
        cout<<x<<"\n";
        k-=d[i]/x;
    }
    return 0;
}