Repository navigation
Expand file tree
/
Copy path1001.cpp
More file actions
155 lines (143 loc) · 4.37 KB
/
Copy path1001.cpp
File metadata and controls
155 lines (143 loc) · 4.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#pragma GCC optimize("Ofast,unroll-loops,no-stack-protector,fast-math")
#include <bits/stdc++.h>
using namespace std;
// Type definitions
typedef long long ll;
typedef long long lli;
typedef long double lld;
typedef pair<lli, lli> pii;
typedef pair<lli, lli> pll;
typedef vector<lli> vi;
typedef vector<vi> vvi;
typedef vector<lli> vll;
typedef vector<vll> vvl;
typedef vector<bool> vb;
typedef vector<string> vs;
typedef vector<char> vc;
typedef vector<vc> vvc;
// Constants
const lli mod = 1e9 + 7;
const lli MAXN = 1e6;
const double eps = 1e-10;
const lli LINF = 1001002003004005006ll;
const lli INF = 1001001001;
const lli MX = 200005;
constexpr lli dx[] = {0, 0, 1, -1};
constexpr lli dy[] = {1, -1, 0, 0};
const string ny[] = {"NO", "YES"};
const string nys[] = {"No", "Yes"};
// Macros
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define rev(x) reverse(all(x))
#define srt(x) sort(all(x))
#define maxx (lli) fmax
#define minn (lli) fmin
#define pb push_back
#define F first
#define S second
#define pi acos(-1.0)
#define sq(x) ((x) * (x))
#define issq(x) (((lli)(sqrt((x)))) * ((lli)(sqrt((x)))) == (x))
#define lg(r, n) (lli)(log2(n) / log2(r))
#define setpre(n) fixed << setprecision(n)
#define UNIQUE(a) (a).erase(unique(all(a)), (a).end())
#define debug(x) \
cerr << #x << " = [ "; \
for (const auto &val : x) \
cerr << val << " "; \
cerr << "]\n"; // works fine for now
#define take(p, n, T) \
vector<T> p(n); \
for (auto &i : p) \
cin >> i;
#define input(x) \
for (auto &i : x) \
cin >> i
#define prlli(x) \
for (auto &i : x) \
cout << i << " "; \
cout << "\n"
#define arrsum(arr) std::accumulate(arr.begin(), arr.end(), 0LL)
// Loop macros
#define loop(i, n) for (lli i = 0; i < (n); ++i)
#define rloop(i, n) for (lli i = (n) - 1; i >= 0; --i)
#define sloop(i, s, t) for (lli i = s; i < t; ++i)
// Utility macros
#define maxs(x, y) (x = max(x, y))
#define mins(x, y) (x = min(x, y))
#define limit(x, l, r) max(l, min(x, r))
#define lims(x, l, r) (x = max(l, min(x, r)))
#define isin(x, l, r) ((l) <= (x) && (x) <= (r))
#define pcnt __builtin_popcountll
#define snuke srand((unsigned)clock() + (unsigned)time(NULL))
#define show_var(x) cout << #x << " = " << x << endl
#define PQ(T) priority_queue<T, vector<T>, greater<T>>
#define bn(x) ((1 << (x)) - 1)
#define dup(x, y) (((x) + (y) - 1) / (y))
#define drnd(x, y) (((x) + (y) / 2) / (y))
#define newline puts("")
#define YES puts("YES")
#define NO puts("NO")
#define tc \
lli t; \
cin >> t; \
for (lli ii = 1; ii <= t; ++ii)
#define tc0 \
lli t = 1; \
for (lli ii = 1; ii <= t; ++ii)
#define nl cout << "\n";
#define gp " "
#define case(ii) cout << "Case " << ii << ": "
#define freopen \
freopen("input.txt", "r", stdin); \
freopen("output.txt", "w", stdout);
// Utility functions
inline lli gcd(lli a, lli b) { return b == 0 ? a : gcd(b, a % b); }
#define lcm(a, b) ((a) * (b)) / gcd(a, b)
inline lli madd(lli a, lli b, lli m = mod) { return (a + b) % m; }
inline lli msub(lli a, lli b, lli m = mod) { return (a - b + m) % m; }
inline lli mmul(lli a, lli b, lli m = mod) { return (a * b) % m; }
inline lli mpow(lli base, lli exp, lli m = mod)
{
lli res = 1;
while (exp > 0)
{
if (exp & 1)
res = mmul(res, base, m);
base = mmul(base, base, m);
exp >>= 1;
}
return res;
}
inline lli minv(lli a, lli m = mod) { return mpow(a, m - 2, m); }
// *****************************************************
// ------------------- CODE STARTS HERE ----------------
// *****************************************************
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
tc
{
lli n;
cin >> n;
vll p(n+1,0);
for (int i=1;i<=n;i++ )
cin >> p[i];
lli mx = arrsum(p);
vll q(n + 1, 0);
for (int i = 1; i <= n - 1; i++)
{
mx = max(mx, abs(p[n - i + 1] - p[1]));
for (int j = 1; j <= n - i; j++)
{
q[j] = p[j + 1] - p[j];
}
for (int j = 1; j <= n - i; j++)
p[j] = q[j];
}
cout << mx << endl;
}
}