Pagini recente » Cod sursa (job #898482) | Cod sursa (job #1716779) | Cod sursa (job #2520714) | Cod sursa (job #3219226) | Cod sursa (job #2816040)
#include <iostream>
#include <fstream>
int s[16001];
using namespace std;
int main()
{
ifstream in("transport.in");
ofstream out("transport.out");
int n,k,st1,st2,dr1,dr2,mijl1,mijl2,vmin,c,gasit;
in>>n>>k;
for(int i=1;i<=n;i++){
in>>vmin;
s[i]=s[i-1]+vmin;
}
st1=1;
dr1=s[n];
vmin=s[n];
while(st1<=dr1){
mijl1=(st1+dr1)/2;
c=0;
gasit=0;
for(int i=1;i<=k and gasit!=-1;i++){
st2=1;
dr2=n;
gasit=-1;
while(st2<=dr2){
mijl2=(st2+dr2)/2;
if(s[mijl2]-c<=mijl1){
gasit=s[mijl2];
st2=mijl2+1;
}
else{
dr2=mijl2-1;
}
}
if(gasit!=-1){
c=gasit;
}
cout<<2;
}
if(gasit!=s[n]){
st1=mijl1+1;
}
else{
vmin=mijl1;
dr1=mijl1-1;
}
cout<<1<<" "<<vmin<<" ";
}
out<<vmin;
return 0;
}