#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("inline")
#include<bits/stdc++.h>
using namespace std;
template < class T> struct cLtraits_identity{
using type = T;
}
;
template < class T> using cLtraits_try_make_signed =
typename conditional<
is_integral< T> :: value ,
make_signed< T> ,
cLtraits_identity< T>
> :: type ;
void * wmem;
char memarr[ 96000000 ] ;
template < class T> inline void walloc1d( T ** arr, int x, void ** mem = & wmem) {
static int skip[ 16 ] = { 0 , 15 , 14 , 13 , 12 , 11 , 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 } ;
( * mem) = ( void * ) ( ( ( char * ) ( * mem) ) + skip[ ( ( unsigned long long ) ( * mem) ) & 15 ] ) ;
( * arr) = ( T* ) ( * mem) ;
( * mem) = ( ( * arr) + x) ;
}
template < class T> inline void walloc1d( T ** arr, int x1, int x2, void ** mem = & wmem) {
walloc1d( arr, x2- x1, mem) ;
( * arr) - = x1;
}
template < class T> int coordcomp_L( int n, T arr[ ] , int res[ ] = NULL , void * mem = wmem) {
int i;
int k = 0 ;
pair< T,int > * r;
walloc1d( & r, n, & mem) ;
for ( i= ( 0 ) ; i< ( n) ; i++ ) {
r[ i] .first = arr[ i] ;
r[ i] .second = i;
}
sort( r, r+ n) ;
if ( res ! = NULL ) {
for ( i= ( 0 ) ; i< ( n) ; i++ ) {
if ( i && r[ i] .first ! = r[ i- 1 ] .first ) {
k++ ;
}
res[ r[ i] .second ] = k;
}
}
else {
for ( i= ( 0 ) ; i< ( n) ; i++ ) {
if ( i && r[ i] .first ! = r[ i- 1 ] .first ) {
k++ ;
}
arr[ r[ i] .second ] = k;
}
}
return k+ 1 ;
}
template < class T, class S> inline int vec2arr( vector< T> & v, S arr[ ] ) {
int i;
int N = v.size ( ) ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
arr[ i] = v[ i] ;
}
return N;
}
template < class T, class S1, class S2> inline int vec2arr( vector< vector< T>> & v, S1 arr1[ ] , S2 arr2[ ] ) {
int i;
int N = v.size ( ) ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
arr1[ i] = v[ i] [ 0 ] ;
arr2[ i] = v[ i] [ 1 ] ;
}
return N;
}
template < class T, class S1, class S2, class S3> inline int vec2arr( vector< vector< T>> & v, S1 arr1[ ] , S2 arr2[ ] , S3 arr3[ ] ) {
int i;
int N = v.size ( ) ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
arr1[ i] = v[ i] [ 0 ] ;
arr2[ i] = v[ i] [ 1 ] ;
arr3[ i] = v[ i] [ 2 ] ;
}
return N;
}
#define main dummy_main
int main( ) {
wmem = memarr;
return 0 ;
}
#undef main
int N;
int A[ 100000 ] ;
class Solution{
public :
int reductionOperations( vector< int > & nums) {
dummy_main( ) ;
N = vec2arr( nums, A) ;
coordcomp_L( N,A) ;
int Lj4PdHRW;
cLtraits_try_make_signed< remove_reference< decltype( ( * ( ( int * ) NULL ) ) ) > :: type > :: type KL2GvlyY;
if ( N== 0 ) {
KL2GvlyY = 0 ;
}
else {
KL2GvlyY = A[ 0 ] ;
for ( Lj4PdHRW= ( 1 ) ; Lj4PdHRW< ( N) ; Lj4PdHRW++ ) {
KL2GvlyY + = A[ Lj4PdHRW] ;
}
}
return KL2GvlyY;
}
}
;
// cLay version 20210607-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// int N, A[1d5];
//
// class Solution {
// public:
// int reductionOperations(vector<int>& nums) {
// dummy_main();
// N = vec2arr(nums, A);
// coordcomp(N,A);
// return sum(A(N));
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk9mYXN0IikKI3ByYWdtYSBHQ0Mgb3B0aW1pemUoInVucm9sbC1sb29wcyIpCiNwcmFnbWEgR0NDIG9wdGltaXplKCJpbmxpbmUiKQojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgY0x0cmFpdHNfaWRlbnRpdHl7CiAgdXNpbmcgdHlwZSA9IFQ7Cn0KOwp0ZW1wbGF0ZTxjbGFzcyBUPiB1c2luZyBjTHRyYWl0c190cnlfbWFrZV9zaWduZWQgPQogIHR5cGVuYW1lIGNvbmRpdGlvbmFsPAogICAgaXNfaW50ZWdyYWw8VD46OnZhbHVlLAogICAgbWFrZV9zaWduZWQ8VD4sCiAgICBjTHRyYWl0c19pZGVudGl0eTxUPgogICAgPjo6dHlwZTsKdm9pZCp3bWVtOwpjaGFyIG1lbWFycls5NjAwMDAwMF07CnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB2b2lkIHdhbGxvYzFkKFQgKiphcnIsIGludCB4LCB2b2lkICoqbWVtID0gJndtZW0pewogIHN0YXRpYyBpbnQgc2tpcFsxNl0gPSB7MCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMX07CiAgKCptZW0pID0gKHZvaWQqKSggKChjaGFyKikoKm1lbSkpICsgc2tpcFsoKHVuc2lnbmVkIGxvbmcgbG9uZykoKm1lbSkpICYgMTVdICk7CiAgKCphcnIpPShUKikoKm1lbSk7CiAgKCptZW0pPSgoKmFycikreCk7Cn0KdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgd2FsbG9jMWQoVCAqKmFyciwgaW50IHgxLCBpbnQgeDIsIHZvaWQgKiptZW0gPSAmd21lbSl7CiAgd2FsbG9jMWQoYXJyLCB4Mi14MSwgbWVtKTsKICAoKmFycikgLT0geDE7Cn0KdGVtcGxhdGU8Y2xhc3MgVD4gaW50IGNvb3JkY29tcF9MKGludCBuLCBUIGFycltdLCBpbnQgcmVzW10gPSBOVUxMLCB2b2lkICptZW0gPSB3bWVtKXsKICBpbnQgaTsKICBpbnQgayA9IDA7CiAgcGFpcjxULGludD4qcjsKICB3YWxsb2MxZCgmciwgbiwgJm1lbSk7CiAgZm9yKGk9KDApO2k8KG4pO2krKyl7CiAgICByW2ldLmZpcnN0ID0gYXJyW2ldOwogICAgcltpXS5zZWNvbmQgPSBpOwogIH0KICBzb3J0KHIsIHIrbik7CiAgaWYocmVzICE9IE5VTEwpewogICAgZm9yKGk9KDApO2k8KG4pO2krKyl7CiAgICAgIGlmKGkgJiYgcltpXS5maXJzdCAhPSByW2ktMV0uZmlyc3QpewogICAgICAgIGsrKzsKICAgICAgfQogICAgICByZXNbcltpXS5zZWNvbmRdID0gazsKICAgIH0KICB9CiAgZWxzZXsKICAgIGZvcihpPSgwKTtpPChuKTtpKyspewogICAgICBpZihpICYmIHJbaV0uZmlyc3QgIT0gcltpLTFdLmZpcnN0KXsKICAgICAgICBrKys7CiAgICAgIH0KICAgICAgYXJyW3JbaV0uc2Vjb25kXSA9IGs7CiAgICB9CiAgfQogIHJldHVybiBrKzE7Cn0KdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgUz4gaW5saW5lIGludCB2ZWMyYXJyKHZlY3RvcjxUPiAmdiwgUyBhcnJbXSl7CiAgaW50IGk7CiAgaW50IE4gPSB2LnNpemUoKTsKICBmb3IoaT0oMCk7aTwoTik7aSsrKXsKICAgIGFycltpXSA9IHZbaV07CiAgfQogIHJldHVybiBOOwp9CnRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFMxLCBjbGFzcyBTMj4gaW5saW5lIGludCB2ZWMyYXJyKHZlY3Rvcjx2ZWN0b3I8VD4+ICZ2LCBTMSBhcnIxW10sIFMyIGFycjJbXSl7CiAgaW50IGk7CiAgaW50IE4gPSB2LnNpemUoKTsKICBmb3IoaT0oMCk7aTwoTik7aSsrKXsKICAgIGFycjFbaV0gPSB2W2ldWzBdOwogICAgYXJyMltpXSA9IHZbaV1bMV07CiAgfQogIHJldHVybiBOOwp9CnRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFMxLCBjbGFzcyBTMiwgY2xhc3MgUzM+IGlubGluZSBpbnQgdmVjMmFycih2ZWN0b3I8dmVjdG9yPFQ+PiAmdiwgUzEgYXJyMVtdLCBTMiBhcnIyW10sIFMzIGFycjNbXSl7CiAgaW50IGk7CiAgaW50IE4gPSB2LnNpemUoKTsKICBmb3IoaT0oMCk7aTwoTik7aSsrKXsKICAgIGFycjFbaV0gPSB2W2ldWzBdOwogICAgYXJyMltpXSA9IHZbaV1bMV07CiAgICBhcnIzW2ldID0gdltpXVsyXTsKICB9CiAgcmV0dXJuIE47Cn0KI2RlZmluZSBtYWluIGR1bW15X21haW4KaW50IG1haW4oKXsKICB3bWVtID0gbWVtYXJyOwogIHJldHVybiAwOwp9CiN1bmRlZiBtYWluCmludCBOOwppbnQgQVsxMDAwMDBdOwpjbGFzcyBTb2x1dGlvbnsKICBwdWJsaWM6CiAgaW50IHJlZHVjdGlvbk9wZXJhdGlvbnModmVjdG9yPGludD4mIG51bXMpewogICAgZHVtbXlfbWFpbigpOwogICAgTiA9IHZlYzJhcnIobnVtcywgQSk7CiAgICBjb29yZGNvbXBfTChOLEEpOwogICAgaW50IExqNFBkSFJXOwogICAgY0x0cmFpdHNfdHJ5X21ha2Vfc2lnbmVkPHJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoKCooKGludCopTlVMTCkpKT46OnR5cGU+Ojp0eXBlIEtMMkd2bHlZOwogICAgaWYoTj09MCl7CiAgICAgIEtMMkd2bHlZID0gMDsKICAgIH0KICAgIGVsc2V7CiAgICAgIEtMMkd2bHlZID0gQVswXTsKICAgICAgZm9yKExqNFBkSFJXPSgxKTtMajRQZEhSVzwoTik7TGo0UGRIUlcrKyl7CiAgICAgICAgS0wyR3ZseVkgKz0gQVtMajRQZEhSV107CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBLTDJHdmx5WTsKICB9Cn0KOwovLyBjTGF5IHZlcnNpb24gMjAyMTA2MDctMQoKLy8gLS0tIG9yaWdpbmFsIGNvZGUgLS0tCi8vICNkZWZpbmUgbWFpbiBkdW1teV9tYWluCi8vIHt9Ci8vICN1bmRlZiBtYWluCi8vIAovLyBpbnQgTiwgQVsxZDVdOwovLyAKLy8gY2xhc3MgU29sdXRpb24gewovLyBwdWJsaWM6Ci8vICAgaW50IHJlZHVjdGlvbk9wZXJhdGlvbnModmVjdG9yPGludD4mIG51bXMpIHsKLy8gICAgIGR1bW15X21haW4oKTsKLy8gICAgIE4gPSB2ZWMyYXJyKG51bXMsIEEpOwovLyAgICAgY29vcmRjb21wKE4sQSk7Ci8vICAgICByZXR1cm4gc3VtKEEoTikpOwovLyAgIH0KLy8gfTsK