Całą sprawa się ma tak - algorytm jest, działa dobrze zdobywa 88 ptk, a przy reszcie jest wywłaszczany. Pomysł dobry tylko optymalizacja. Cały problem leży w wyszukiwaniu najmniejszej wartości w tablicy.
Kod: Zaznacz cały
#include <cstdio>
#define MAX_N 1000000
int main()
{
int n, i;
scanf( "%d", & n );
int min = 0, minPos = 0, lastMin = 0;
unsigned long long suma = 0;
static unsigned int k[ MAX_N ];
for( i = 0; i < n; i++ )
{
scanf( "%d", & k[ i ] );
}
min = k[ n - 1 ];
minPos = n - 1;
lastMin = - 1;
while( lastMin !=( n - 1 ) )
{
for( i = n - 2; i > lastMin; i-- )
{
if( k[ i ] < min )
{
min = k[ i ];
minPos = i;
}
}
suma += k[ minPos ] *( minPos - lastMin );
lastMin = minPos;
min = k[ n - 1 ];
minPos = n - 1;
}
printf( "%lld
", suma );
return 0;
}