183702025-10-21 14:07:31ubormaciMaximális eltéréscpp17Elfogadva 100/10043ms540 KiB
#include <iostream>
#include <algorithm> // for sort, mainly
#include <vector>
#include <map>
#include <set>
#include <cmath>
#include <array>
#include <string>
#include <cstdio>
#include <iterator>
#include <unordered_set>
#include <cstdint> // for int64_t, int32_t, etc
#include <queue>
#include <stack>
#include <deque>
#include <numeric> // gcd, lcm
#include <fstream>
#include <bitset> // for bitset
#include <iomanip>
#include <cassert> // for set with custom ordering
#include <type_traits> // for set with custom ordering
#include <utility> // for swap, forward, etc
using namespace std;

#pragma GCC optimize("O2")
// #pragma GCC optimize("O1","O2","O3","Ofast","unroll-loops")
//#pragma GCC target("sse","sse2","sse3","sse4.1","sse4.2","avx","avx2","fma")

template<typename A, typename B> ostream& operator<<(ostream &os, const pair<A, B> &p) { return os << '(' << p.first << ", " << p.second << ')'; }
template<typename T_container, typename T = typename enable_if<!is_same<T_container, string>::value, typename T_container::value_type>::type> ostream& operator<<(ostream &os, const T_container &v) { os << '{'; string sep; for (const T &x : v) os << sep << x, sep = ", "; return os << '}'; }
void dbg_out() { cout << endl; }
template<typename Head, typename... Tail> void dbg_out(Head H, Tail... T) { cout << ' ' << H; dbg_out(T...); }
#ifdef LOCAL
#define dbg(...) cout << "(" << #__VA_ARGS__ << "):", dbg_out(__VA_ARGS__)
#else
#define dbg(...)
#endif

/*
 *
 * notes:
 *
 * int64_t
 * stoi(string s) -> string to int
 * to_string() -> int (or else) to string
 *
 * vector declaration:
 * vector<ll> v(n, 0)
 * vector<vector<ll>> v(n, vector<ll>(n, 0));
 *
 * {if statement} ? {truth value} : {false value}
 *
 * set lower bound/upper bound:
 * 	// . . . m1 . . . d . . . . m2
 *    auto m1_it = b.lower_bound(d);
 *    advance(m1_it, -1);
 *    m1 = *m1_it;
 *	m2 = *b.upper_bound(d);
 *
 * #ifdef LOCAL
 *    freopen("in.txt","r",stdin);
 *    freopen("out.txt","w",stdout);
 * #endif
 *
 * constexpr auto lcm(auto x, auto... xs)
 * {
 *	return ((x = std::lcm(x, xs)), ...);
 * }
 *
 * std::gcd(int a, int b)
 *
 * cout << setprecision(n);
 *
 * set with custom ordering
 * set<ll, decltype(&cmp)> qu(cmp);
 *
 */

typedef int64_t ll;

void solve() {

    // checked the solution
    int n;
    cin >> n;
    ll ans = 0;
    ll setMin = -1e9;
    ll setMax = -1e9;
    for(ll i = 0; i < n; i++) {
        ll x;
        cin >> x;
        setMax = max(setMax, ans + x);
        setMin = max(setMin, ans - x);
        ans = max(setMax - x, setMin + x);
    }

    // fucking genius, btw
    
    cout << ans << "\n";

}

int main()
{
    std::ios_base::sync_with_stdio(false);
    //cin.tie(nullptr);
    //cout.tie(nullptr);

    ll tests = 0;
    cin >> tests;

    while(tests--)
    {
        solve();
    }

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
subtask230/30
2Elfogadva2ms316 KiB
3Elfogadva2ms316 KiB
4Elfogadva2ms508 KiB
5Elfogadva2ms316 KiB
6Elfogadva2ms316 KiB
7Elfogadva3ms316 KiB
8Elfogadva1ms316 KiB
9Elfogadva1ms356 KiB
subtask330/30
10Elfogadva17ms424 KiB
11Elfogadva14ms424 KiB
12Elfogadva17ms540 KiB
13Elfogadva14ms388 KiB
14Elfogadva12ms316 KiB
15Elfogadva17ms316 KiB
16Elfogadva43ms508 KiB
17Elfogadva17ms316 KiB
subtask440/40
18Elfogadva1ms316 KiB
19Elfogadva2ms316 KiB
20Elfogadva2ms316 KiB
21Elfogadva2ms508 KiB
22Elfogadva2ms316 KiB
23Elfogadva2ms316 KiB
24Elfogadva3ms316 KiB
25Elfogadva1ms316 KiB
26Elfogadva1ms356 KiB
27Elfogadva17ms424 KiB
28Elfogadva14ms424 KiB
29Elfogadva17ms540 KiB
30Elfogadva14ms388 KiB
31Elfogadva12ms316 KiB
32Elfogadva17ms316 KiB
33Elfogadva43ms508 KiB
34Elfogadva17ms316 KiB
35Elfogadva28ms508 KiB
36Elfogadva23ms508 KiB
37Elfogadva32ms428 KiB
38Elfogadva32ms316 KiB
39Elfogadva21ms424 KiB
40Elfogadva25ms316 KiB
41Elfogadva26ms424 KiB
42Elfogadva32ms316 KiB