Cod sursa(job #3330867)

Utilizator Ilie_MityIlie Dumitru Ilie_Mity Data 22 decembrie 2025 18:02:18
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
// Ilie "The-Winner" Dumitru
// Dumnezeu sa o ierte
#include<bits/stdc++.h>
#define sz(x) ((int)(x).size())
#define all(x) (x).begin(), (x).end()
#define err(...) fprintf(stderr, __VA_ARGS__)
using ll=long long;
using dbl=long double;
constexpr int NMAX=16'005;
constexpr ll MOD=1'000'000'007;

int N, K;
int v[NMAX];

bool doable(int x)
{
	int i, s, k=1;

	for(i=s=0;i<N;++i)
	{
		if(s+v[i]>x)
		{
			s=0;
			++k;
		}
		s+=v[i];
	}

	return k<=K;
}

int main()
{
	FILE* f=fopen("transport.in", "r"), *g=fopen("transport.out", "w");
	int i, l=-1, r=NMAX*NMAX, mid;

	fscanf(f, "%d%d", &N, &K);
	for(i=0;i<N;++i)
		fscanf(f, "%d", v+i);

	do
	{
		mid=l+((r-l)>>1);
		if(doable(mid))
			r=mid;
		else
			l=mid;
	}while(r-l>1);

	fprintf(g, "%d\n", r);

	fclose(f);
	fclose(g);
	return 0;
}