Submission #2630202

Source Code Expand

Copy
#include <bits/stdc++.h>
using namespace std;

#define NDEBUG
#ifdef DEBUG
#include "../cout11.h"
#undef NDEBUG
#endif
#include <cassert>

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> ii;
typedef pair<ll,ll> llll;
typedef pair<double,double> dd;

typedef vector<int> vi;
typedef vector<vector<int>> vvi;
typedef vector<ii> vii;
typedef vector<vector<ii>> vvii;
typedef vector<ll> vll;

#define sz(a)  int((a).size())
#define pb  push_back
#define FOR(var,from,to) for(int var=(from);var<=(to);++var)
#define rep(var,n)  for(int var=0;var<(n);++var)
#define rep1(var,n)  for(int var=1;var<=(n);++var)
#define repC2(vari,varj,n)  for(int vari=0;vari<(n)-1;++vari)for(int varj=vari+1;varj<(n);++varj)
#define ALL(c)  (c).begin(),(c).end()
#define RALL(c)  (c).rbegin(),(c).rend()
#define tr(i,c)  for(auto i=(c).begin(); i!=(c).end(); ++i)
#define found(s,e)  ((s).find(e)!=(s).end())
#define mset(arr,val)  memset(arr,val,sizeof(arr))
#define mid(x,y) ((x)+((y)-(x))/2)
#define IN(x,a,b) ((a)<=(x)&&(x)<=(b))

#define INTSPACE 12
char _buf[INTSPACE*1000000 + 3];

int loadint() {
    if (fgets(_buf, INTSPACE+3, stdin)==NULL) return 0;
    return atoi(_buf);
}
int loadvec(vector<int>& v, int N=-1) {
    if (N == -1) {
        N = loadint();
        if (N==0) return 0;
    }
    int bufsize = INTSPACE*N + 3;
    if (fgets(_buf, bufsize, stdin)==NULL) return 0;
    v.resize(N);

    int i=0;
    bool last = false;
    for (char *p=&_buf[0]; ;) {
        char *q = p;
        while (*q > ' ') ++q;
        if (*q == 0x0D || *q == 0x0A) last = true;
        *q = 0;
        v[i++] = atoi(p);
        if (last || i == N) break;
        p = q+1;
    }
    // assert(i <= N);
    return i;
}


void solve(int N, vi& a) {
    a.insert(a.begin(), 0);
    a.push_back(0);

    vector<int> d(N+1);
    rep(i, N+1) d[i] = abs(a[i+1] - a[i]);

    vector<ll> dacc(N+2, 0);
    rep(i, N+1){
        dacc[i+1] = dacc[i] + d[i];
    }
#ifdef DEBUG
    cerr << dacc << endl;
#endif

    ll total = dacc.back();

    rep1(i, N) {
        ll d_old = d[i] + d[i-1];
        ll d_new = abs(a[i+1] - a[i-1]);
        cout << (total - d_old + d_new) << endl;
    }
}

int main() {
    vector<int> a;
    int N = loadvec(a);
    solve(N, a);
    return 0;
}

Submission Info

Submission Time
Task C - Traveling Plan
User naoya_t
Language C++14 (GCC 5.4.1)
Score 300
Code Size 2367 Byte
Status
Exec Time 162 ms
Memory 3448 KB

Test Cases

Set Name Score / Max Score Test Cases
Sample 0 / 0 sample-01.txt, sample-02.txt, sample-03.txt
All 300 / 300 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, sample-01.txt, sample-02.txt, sample-03.txt
Case Name Status Exec Time Memory
01.txt 156 ms 3320 KB
02.txt 160 ms 3320 KB
03.txt 1 ms 256 KB
04.txt 161 ms 3320 KB
05.txt 162 ms 3320 KB
06.txt 161 ms 3320 KB
07.txt 157 ms 3448 KB
08.txt 160 ms 3320 KB
09.txt 161 ms 2808 KB
10.txt 161 ms 2808 KB
11.txt 157 ms 2808 KB
12.txt 160 ms 2808 KB
sample-01.txt 1 ms 256 KB
sample-02.txt 1 ms 256 KB
sample-03.txt 1 ms 256 KB