結果

問題 No.3268 As Seen in Toasters
ユーザー memin
提出日時 2025-09-12 21:52:15
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 111 ms / 2,000 ms
コード長 2,047 bytes
コンパイル時間 1,980 ms
コンパイル使用メモリ 201,300 KB
実行使用メモリ 7,716 KB
最終ジャッジ日時 2025-09-12 23:37:55
合計ジャッジ時間 5,722 ms
ジャッジサーバーID
(参考情報)
judge7 / judge6
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 41
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
using namespace std;
//#include <atcoder/all>
//using namespace atcoder;
using ll = long long;
using pp = pair<int,int>;
#define rep(i, n) for (i = 0; (i) < (n); ++(i))
#define reps(i, a, n) for (i = (a); (i) < (n); ++(i))
#define rrep(i, n) for (i = (n-1); (i) >= (0); --(i))
#define all(a) (a).begin(), (a).end()
#define oor(a,b,h,w) (a<0||a>=h||b<0||b>=w)//out of range
#define fi first
#define se second
#define mkpr(a,b) make_pair(a,b)
#define mktpl(a,b,c) make_tuple(a,b,c)
#define fixp(a) fixed<<setprecision(a) //小数点以下指定
vector<int> dx={1,0,-1,0};//{1,1,0,-1,-1,-1,0,1};
vector<int> dy={0,-1,0,1};//{0,-1,-1,-1,0,1,1,1};
//ll keta_calc(ll x){ll ans=0;while(x){x/=10;ans++;}return ans;}
//ll powll(ll x,ll y){ll ans=1;while(y){ans*=x;y--;}return ans;}
//alias g++='g++ -std=c++17'
#define chmin(a,b) a=min(a,(b))
#define chmax(a,b) a=max(a,(b))

int main(){
    int i=0,j=0;
    int n,m,k;

    cin >> n ;
    vector<int> a(n);
    rep(i,n){
        cin >> a[i];
    }
    sort(all(a));
    reverse(all(a));
    // rep(i,n){
    //     cout << a[i] << " ";
    // }cout << endl;
    ll ans = 1001001001001001001;
    ll sum = 0;
    rep(i,n-1){
        if(a[i] < 0 && a[i+1] < 0){
            sum += -a[i] -a[i+1];
            // cout << -a[i] -a[i+1] << " ";
        }else{
            sum += abs(a[i] - a[i+1]);
            // cout << abs(a[i] - a[i+1]) << " ";
        }
    }//cout << endl;
    chmin(ans,sum);
    rrep(i,n-2){
        swap(a[i],a[i+1]);
    }
    sum = 0;
    rep(i,n-1){
        if(a[i] < 0 && a[i+1] < 0){
            sum += -a[i] -a[i+1];
            // cout << -a[i] -a[i+1] << " ";
        }else{
            sum += abs(a[i] - a[i+1]);
            // cout << abs(a[i] - a[i+1]) << " ";
        }
    }//cout << endl;
    chmin(ans,sum);

    //sort(aitem.begin(),aitem.end(),
    //[](const vector<int> &alpha,const vector<int> &beta){return alpha[1] < beta[1];});
    
    cout << ans << endl ;

    //if(flag==0)printf("Yes\n");
    //else printf("No\n");

    return 0;
}
0