#include #include #include using namespace std; typedef pair< int, int > PII; void solve() { int N,M; cin >> N >> M; vector< int > a(M); vector< int > l; vector< int > r; for( int i=0; i> a[i]; if( a[i] < 0 ) l.emplace_back(-a[i]); else r.emplace_back(a[i]); } // この値は、各項目の移動距離ではあるが、それと同時に最小距離でもある? // そうするために、0を追加 l.emplace_back(0); r.emplace_back(0); sort( l.begin(), l.end() ); sort( r.begin(), r.end() ); const int INF = 1e9; vector< int > dp(M,INF); for( int i=0; i<=N; i++ ) { if( i < l.size() && N-i < r.size() ) { dp[i] = min( l[i]*2 + r[N-i], l[i] + r[N-i]*2 ); } } int res = INF; for( int i=0; i<=N; i++ ) { res = min( res, dp[i] ); } cout << res << endl; return; } int main() { solve(); return 0; }