Pagini recente » Cod sursa (job #3360951) | Cod sursa (job #3360934)
#include <stdio.h>
#define MAXP 100000
int sir[MAXP] , el[MAXP];
int main () {
FILE *fin , *fout;
int k , p , i , j , maxj , nru , nrn , maxe , maxpz;
long long maxp , minu;
fin = fopen ( "lss.in" , "r" );
fscanf ( fin , "%d%d" , &k , &p );
for ( i = 0 ; i < p ; i++ )
fscanf ( fin , "%d" , &el[i] );
fclose ( fin );
for ( i = p - 1 ; i > 0 ; i-- ) {
maxe = el[0];
maxpz = 0;
for ( j = 1 ; j <= i ; j++ )
if ( el[j] > maxe ) {
maxe = el[j];
maxpz = j;
}
el[maxpz] = el[i];
el[i] = maxe;
}
for ( i = 0 ; i < p ; i++ )
sir[i] = ( el[i] - 1 ) % k + 1;
minu = 0;
for ( i = 0 ; i < p ; i++ ) {
maxp = -k - 1;
maxj = nru = nrn = 0;
for ( j = p - 1 ; j >= 0 ; j-- ) {
if ( sir[j] != 0 ) {
if ( ( long long ) nrn - ( long long ) k * nru - sir[j] > maxp ) {
maxp = ( long long ) nrn - ( long long ) k * nru - sir[j];
maxj = j;
}
if ( sir[j] == 1 )
nru++;
nrn++;
}
}
minu = minu + sir[maxj];
sir[maxj] = 0;
for ( j = maxj + 1 ; j < p ; j++ ) {
if ( sir[j] != 0 ) {
sir[j]--;
if ( sir[j] == 0 )
sir[j] = sir[j] + k;
}
}
}
fout = fopen ( "lss.out" , "w" );
fprintf ( fout , "%lld\n" , minu );
fclose ( fout );
return 0;
}