Pagini recente » Cod sursa (job #2964405) | Cod sursa (job #209786) | Cod sursa (job #3165393) | Cod sursa (job #863102) | Cod sursa (job #773345)
Cod sursa(job #773345)
#include <fstream>
#include <algorithm>
#include <queue>
using namespace std;
ifstream F("kcover.in");
ofstream G("kcover.out");
#define Nmax 100011
#define Lung 100000011
int T,N,K,Act;
long long A[Nmax],Sum,x;
char Str[Lung];
priority_queue < int > H;
void Get( long long &Rez )
{
Rez=0;
int neg=1;
while ( !((Str[Act]>='0' && Str[Act]<='9') || Str[Act]=='-') ) ++Act;
if ( Str[Act]=='-' ) ++Act,neg=-1;
while ( Str[Act]>='0' && Str[Act]<='9' ) Rez=Rez*10+Str[Act++]-'0';
Rez*=neg;
}
int main()
{
for (F>>T;T;--T)
{
F>>N>>K;
Act=0;
F.getline(Str,Lung,'\n');
F.getline(Str,Lung,'\n');
--K;
if ( N==1 )
{
Get(x);
G<<"0\n";
continue;
}
for (int i=1;i<=N;++i)
Get(A[i]);
sort(A+1,A+N+1);
Sum=A[N]-A[1];
for (int i=1;i<N;++i)
H.push(A[i+1]-A[i]);
for (int i=N-1;K && i;--i,--K)
Sum-=H.top(), H.pop();
G<<Sum<<'\n';
for (int i=1;i<=N;++i) A[i]=0;
while ( H.size() ) H.pop();
}
}