Skip to content

Commit 3aefcc1

Browse files
Add files via upload
1 parent 17e3b0c commit 3aefcc1

File tree

4 files changed

+156
-0
lines changed

4 files changed

+156
-0
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
for _ in range(int(input())):
2+
n, m = map(int, input().split())
3+
4+
totalX = 0
5+
totalY = 0
6+
7+
input()
8+
for i in range(n-1):
9+
x, y = map(int, input().split())
10+
totalX += x
11+
totalY += y
12+
13+
print((totalX + m + totalY + m) * 2)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
for _ in range(int(input())):
2+
3+
n = int(input())
4+
p = [-1] * n
5+
6+
for pi in range(n):
7+
row = list(input())
8+
idx = 0
9+
for pj in range(n):
10+
if pi > pj and row[pj] == '1':
11+
idx += 1
12+
if pi < pj and row[pj] == '0':
13+
idx += 1
14+
p[idx] = pi + 1
15+
16+
print(' '.join(map(str, p)))
17+
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
from itertools import combinations
2+
3+
def is_palindrome(seq):
4+
return seq == seq[::-1]
5+
6+
def g(arr):
7+
subsequences = []
8+
for i in range(1, len(arr) + 1):
9+
subsequences.extend(combinations(arr, i))
10+
11+
palindromic_subsequences = [seq for seq in subsequences if is_palindrome(seq)]
12+
13+
max_length = max(len(seq) for seq in palindromic_subsequences)
14+
longest_palindromic_subsequences = [seq for seq in palindromic_subsequences if len(seq) == max_length]
15+
count_longest_palindromic_subsequences = len(longest_palindromic_subsequences)
16+
17+
return count_longest_palindromic_subsequences
18+
19+
for _ in range(int(input())):
20+
n = int(input())
21+
22+
if n == 6:
23+
print("1 1 2 3 1 2")
24+
elif n == 7:
25+
print("1 1 2 1 3 2 2")
26+
elif n == 8:
27+
print("2 1 1 2 1 2 2 1")
28+
29+
else:
30+
if n % 2 == 0: # even case
31+
# 3 4 5 6 ... (2 1 1 2 1 2 2 1) ... 5 6 3 4
32+
arr = [0] * n
33+
for i in range(0,(n-8) // 2, 2):
34+
arr[i] = i + 3
35+
arr[i + 1] = i + 4
36+
37+
arr[n - i - 2] = i + 3
38+
arr[n - i - 1] = i + 4
39+
40+
arr[(n-8) // 2] = 2
41+
arr[(n-8) // 2 + 1] = 1
42+
arr[(n-8) // 2 + 2] = 1
43+
arr[(n-8) // 2 + 3] = 2
44+
arr[(n-8) // 2 + 4] = 1
45+
arr[(n-8) // 2 + 5] = 2
46+
arr[(n-8) // 2 + 6] = 2
47+
arr[(n-8) // 2 + 7] = 1
48+
49+
else:
50+
# 3 4 5 6 ... (2 1 1 2 (n) 1 2 2 1) ... 5 6 3 4
51+
arr = [0] * n
52+
for i in range(0,(n-9) // 2, 2):
53+
arr[i] = i + 3
54+
arr[i + 1] = i + 4
55+
56+
arr[n - i - 2] = i + 3
57+
arr[n - i - 1] = i + 4
58+
59+
arr[(n-9) // 2] = 2
60+
arr[(n-9) // 2 + 1] = 1
61+
arr[(n-9) // 2 + 2] = 1
62+
arr[(n-9) // 2 + 3] = 2
63+
arr[(n-9) // 2 + 4] = n
64+
arr[(n-9) // 2 + 5] = 1
65+
arr[(n-9) // 2 + 6] = 2
66+
arr[(n-9) // 2 + 7] = 2
67+
arr[(n-9) // 2 + 8] = 1
68+
69+
print(' '.join(map(str, arr)))
70+
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
#pragma GCC optimize("Ofast")
2+
#pragma GCC optimize("unroll-loops")
3+
#include <bits/stdc++.h>
4+
using namespace std;
5+
6+
typedef long long ll;
7+
typedef vector<int> vi;
8+
#define fast_cin() \
9+
ios_base::sync_with_stdio(false); \
10+
cin.tie(NULL); \
11+
cout.tie(NULL);
12+
13+
ll n;
14+
vector<ll> arr;
15+
ll bad_arr_at_x(int x) {
16+
vector<ll> geX(n);
17+
for (int i = 0; i < n; i++) geX[i] = (arr[i] >= x ? 1 : -1);
18+
vector<ll> pfs(n);
19+
pfs[0] = geX[0];
20+
for (int i = 1; i < n; i++) pfs[i] = pfs[i - 1] + geX[i];
21+
22+
ll ans = 0;
23+
int prevIdx = n;
24+
25+
unordered_map<ll, ll> mp;
26+
for (int i = n - 1; i >= 0; i--) {
27+
if (arr[i] == x) {
28+
while (prevIdx > i){
29+
prevIdx--;
30+
mp[pfs[prevIdx]]++;
31+
}
32+
}
33+
34+
ll p = (i > 0 ? pfs[i-1] : 0);
35+
ans += mp[p];
36+
}
37+
return ans;
38+
}
39+
int main() {
40+
int tc;
41+
cin >> tc;
42+
while (tc--) {
43+
cin >> n;
44+
arr.resize(n);
45+
for (int i = 0; i < n; i++) cin >> arr[i];
46+
47+
ll ans = 0;
48+
for (int x = 1; x <= 10; x++) {
49+
ans += bad_arr_at_x(x);
50+
}
51+
52+
ll total = n + ((n-1)*n)/2LL;
53+
cout << total - ans << endl;
54+
}
55+
return 0;
56+
}

0 commit comments

Comments
 (0)