Cod sursa(job #2343048)

Utilizator Radu_FilipescuFilipescu Radu Radu_Filipescu Data 13 februarie 2019 17:25:39
Problema Grupuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>

using namespace std;

ifstream fin( "grupuri.in" );
ofstream fout( "grupuri.out" );

const int NMAX = 100004;

int N, K;
int a[NMAX];
int dp[NMAX];

void Read()
{
  fin >> K >> N;

  for( int i = 1; i <= N; ++i )
    fin >> a[i];

  fin.close();
}

void Do()
{
  long long sum = 0;

  for( int i = 1; i <= N - K; ++i )
    sum += 1LL * a[i];

  int aux = N - K + 1;
  int nr_g;

  dp[aux] = 0;
  nr_g = a[aux];

  for( int i = aux + 1; i <= N; ++i )
  {
    dp[i] = ( a[i] - a[i - 1] ) * ( i - aux );

    if( sum >= dp[i] )
    {
      nr_g = a[i];
      sum -= dp[i];
    }
    else
    {
      nr_g += sum / ( i - aux );
      sum = 0;
      break;
    }
  }

  if( sum > 0 ) nr_g += sum / K;

  fout << nr_g << '\n';

  //for( int i = 1; i <= N; ++i )
  // fout << dp[i] << ' ';

}

int main()
{
    Read();
    Do();

    return 0;
}