LeetCode Biweekly Contest 18 4問目 - Reverse Subarray To Maximize Array Value [1330]

Source

LeetCode Biweekly Contest 18
問題文

問題概要

省略

解法

省略

cLayversion 20200119-1)のコード

C++に変換後のコードはこちら

#define main dummy_main
{}
#undef main

int N;
ll A[1d5];
ll s[1d5], t[1d5];

class Solution {
public:
  int maxValueAfterReverse(vector<int>& nums) {
    ll res = 0, tmp = 0;
    N = nums.size();
    rep(i,N) A[i] = nums[i];

    if(N==1) return 0;

    rep(i,1,N) res += abs(A[i] - A[i-1]);

    rep(2){
      rep(i,1,N) tmp >?= abs(A[0] - A[i]) - abs(A[i-1] - A[i]);
      reverse(A,A+N);
    }

    rep(mask,1<<2){
      rep(i,N-1) s[i] = -abs(A[i]-A[i+1]) if[mask&1, +, -] A[i] if[mask&2, +, -] A[i+1];
      rep(i,1,N) t[i] = -abs(A[i]-A[i-1]) if[mask&1, -, +] A[i-1] if[mask&2, -, +] A[i];

      rrep(i,1,N-1) t[i] >?= t[i+1];
      rep(i,N-1) tmp >?= s[i] + t[i+1];
    }

    return res + tmp;
  }
};

Current time: 2024年04月23日16時40分15秒
Last modified: 2020年02月08日23時01分06秒 (by laycrs)
Tags: Competitive_Programming_Incomplete LeetCode
トップページに戻る

Logged in as: unknown user (not login)

ログイン: