File tree 2 files changed +109
-0
lines changed
alphastar/alphastar-turing-2021
2 files changed +109
-0
lines changed Original file line number Diff line number Diff line change
1
+ #include < bits/stdc++.h>
2
+
3
+ using namespace std ;
4
+
5
+ using ll = long long ;
6
+ #define ii pair<int , int >
7
+ #define f first
8
+ #define s second
9
+ #define pb push_back
10
+ #define mp make_pair
11
+ #define all (x ) x.begin(), x.end()
12
+ #define sz (x ) (int )x.size()
13
+ #define F0R (i, n ) for (int i = 0 ; i < n; i++)
14
+ #define FOR (i, a, b ) for (int i = a; i < b; i++)
15
+ #define inf 1000000010
16
+
17
+ int main () {
18
+ cin.tie (0 )->sync_with_stdio (0 );
19
+
20
+ int t; cin >> t;
21
+ int n; cin >> n;
22
+ int A[n]; F0R (i, n) cin >> A[i];
23
+
24
+ bool g = 1 ;
25
+ vector<int > newSeq;
26
+ F0R (i, n) if (A[i] <= n) newSeq.pb (A[i]);
27
+ int lastCar = -1 ;
28
+ for (int i = 0 ; i < sz (newSeq); i++) {
29
+ if (lastCar != -1 && lastCar <= newSeq[i]) g = 0 ;
30
+ if (i == sz (newSeq)-1 ) continue ;
31
+ if (newSeq[i] >= newSeq[i+1 ]) {
32
+ if (lastCar != -1 ) g = 0 ;
33
+ else {
34
+ lastCar = newSeq[i];
35
+ }
36
+ }
37
+ }
38
+ cout << g << endl;
39
+
40
+ return 0 ;
41
+ }
Original file line number Diff line number Diff line change
1
+ #include < bits/stdc++.h>
2
+
3
+ using namespace std ;
4
+
5
+ using ll = long long ;
6
+ #define ii pair<int , int >
7
+ #define f first
8
+ #define s second
9
+ #define pb push_back
10
+ #define mp make_pair
11
+ #define all (x ) x.begin(), x.end()
12
+ #define sz (x ) (int )x.size()
13
+ #define F0R (i, n ) for (int i = 0 ; i < n; i++)
14
+ #define FOR (i, a, b ) for (int i = a; i < b; i++)
15
+ #define inf 1000000010
16
+
17
+ int n;
18
+ ll P[1000000 ];
19
+ vector<int > adj[1000000 ];
20
+ ll sz[1000000 ];
21
+
22
+ ll dfs1 (int u, int p = 0 ) {
23
+ sz[u] = P[u];
24
+ for (int v : adj[u]) {
25
+ if (v != p) sz[u] += dfs1 (v, u);
26
+ }
27
+ return sz[u];
28
+ }
29
+
30
+ ll best = 1e18 ;
31
+ int bestAns = -1 ;
32
+ void dfs2 (int u, int p = 0 , ll par = 0 ) {
33
+ ll childrenSum = 0 ;
34
+ ll mxChild = 0 ;
35
+ for (auto v : adj[u]) {
36
+ if (v != p) {
37
+ childrenSum += sz[v];
38
+ mxChild = max (mxChild, sz[v]);
39
+ }
40
+ }
41
+ if (best > max (par, mxChild)) {
42
+ best = max (par, mxChild);
43
+ bestAns = u;
44
+ }
45
+ for (auto v : adj[u]) {
46
+ if (v != p) {
47
+ dfs2 (v, u, par+childrenSum-sz[v]+P[u]);
48
+ }
49
+ }
50
+ }
51
+
52
+ int main () {
53
+ cin.tie (0 )->sync_with_stdio (0 );
54
+
55
+ cin >> n;
56
+ F0R (i, n) cin >> P[i];
57
+ F0R (i, n-1 ) {
58
+ int s, d; cin >> s >> d;
59
+ adj[s].pb (d);
60
+ adj[d].pb (s);
61
+ }
62
+
63
+ dfs1 (0 );
64
+ dfs2 (0 );
65
+ cout << bestAns << endl;
66
+
67
+ return 0 ;
68
+ }
You can’t perform that action at this time.
0 commit comments