Mai intai trebuie sa te autentifici.
Cod sursa(job #1773028)
Utilizator | Data | 7 octombrie 2016 14:40:33 | |
---|---|---|---|
Problema | Transport | Scor | 20 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.7 kb |
// solutie 1
#include <iostream>
#include <algorithm>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int v[16000],v1[16000],i,n,k,mx,s=0,s1=0,s2=0,x=0;
void findmx()
{
while(k)
{
for(i=x;i<=n-1;i++)
{
if(mx>=s1+v[i]) s1+=v[i];
else {x=i;k--; break; }
}
s2+=s1;
s1=0;
if(s2==s) k=0;
}
}
int main()
{
in>>n>>k;
for(i=0;i<=n-1;i++) { in>>v[i]; v1[i]=v[i]; }
sort(v1,v1+n);
mx=v1[n-1];
for(i=0;i<=n-1;i++) s+=v[i];
findmx();
while(s2<s) { mx++; k=3; s1=0; x=0; s2=0; findmx();}
out<<mx;
return 0;
}