#include #include using namespace std; int K,N; std::vector > pole; bool is_enough(int i) { int celk = 0; int was[K+1]; for(int ii=0;ii> N >> K) { pole.resize(N); int velik_sum = 0; for(int i=0;i> l; velik_sum += l; for(int i=0;i> tmp; pole[i].push_back(tmp); } } int down = K-1; int up = velik_sum+2; while(down+1 < up) { int i = (down+up)/2; if(is_enough(i)) up = i; else down = i; } if(up < velik_sum+1) std::cout << up << std::endl; else std::cout << -1 << std::endl; } }