原来“M大值”是“第M大值”

程序代码:
#include <stdio.h>
int main( void )
{
unsigned short buf[101] = {};
size_t n;
scanf( "%zu", &n );
for( size_t i=0; i!=n; ++i )
{
unsigned val;
scanf( "%u", &val );
++buf[val];
}
size_t m;
scanf( "%zu", &m );
for( size_t i=0; i!=n; ++i )
{
if( m <= buf[i] )
{
printf( "%zu\n", i );
break;
}
else
m -= buf[i];
}
}