Skip to content

Commit 6fc62a6

Browse files
committed
did some flashcards and I'm working on a mock CCC problem
1 parent 3d58d2f commit 6fc62a6

File tree

7 files changed

+440
-136
lines changed

7 files changed

+440
-136
lines changed
68.1 KB
Binary file not shown.
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
/*******************************************************************************************
6+
Link:
7+
Points:
8+
Original solution:
9+
*******************************************************************************************/
10+
11+
void optimalSplitPoint()
12+
{
13+
int N;
14+
scanf("%d", &N);
15+
16+
vector<int> a(N);
17+
int leftSum = 0;
18+
int rightSum = 0;
19+
for (int i = 0; i < N; ++i)
20+
{
21+
int temp;
22+
scanf("%d", &temp);
23+
a[i] = temp;
24+
25+
if (i == 0)
26+
leftSum += temp;
27+
if (i >= 1)
28+
rightSum += temp;
29+
}
30+
31+
int bestSplit = INT_MAX;
32+
int bestSplitIndex = 0;
33+
int bestSwapIndex = -1;
34+
35+
// sort(rightCounts.begin(), rightCounts.end());
36+
for (int i = 1; i < N - 1; ++i)
37+
{
38+
rightSum -= a[i];
39+
int diff = abs(leftSum - rightSum);
40+
if (diff < bestSplit)
41+
{
42+
bestSplit = diff;
43+
bestSplitIndex = i + 1;
44+
}
45+
46+
if (leftSum == rightSum)
47+
{
48+
printf("%d %d\n", i + 1, bestSwapIndex);
49+
return;
50+
}
51+
// We want to shift element from right array to left array
52+
else if (leftSum < rightSum)
53+
{
54+
diff = abs((leftSum + a[i + 1]) - (rightSum - a[i + 1]));
55+
if (diff < bestSplit)
56+
{
57+
bestSplit = diff;
58+
bestSplitIndex = i + 1;
59+
bestSwapIndex = i + 2;
60+
}
61+
}
62+
else
63+
{
64+
diff = abs((leftSum + a[i - 1]) - (rightSum - a[i - 1]));
65+
if (diff < bestSplit)
66+
{
67+
bestSplit = diff;
68+
bestSplitIndex = i + 1;
69+
bestSwapIndex = i - 2;
70+
}
71+
}
72+
73+
leftSum += a[i];
74+
}
75+
76+
printf("%d %d\n", bestSplitIndex, bestSwapIndex);
77+
}
78+
79+
int main()
80+
{
81+
optimalSplitPoint();
82+
return 0;
83+
}
-119 KB
Binary file not shown.

Solutions/DMOJ Solutions/S3/palindromicPoster.cpp

Lines changed: 0 additions & 119 deletions
This file was deleted.

anki

-130 KB
Binary file not shown.

anki.cpp

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,47 @@
22

33
using namespace std;
44

5-
vector<int> nextGreaterElement1(vector<int> &nums1, vector<int> &nums2)
5+
string addBinary(string a, string b)
66
{
7-
unordered_map<int, int> nums1Hash;
8-
for (int i = 0; i < nums1.size(); ++i)
9-
nums1Hash[i] = i;
7+
int i = a.size() - 1;
8+
int j = b.size() - 1;
9+
int carry = 0;
1010

11-
stack<int> descendingNums;
12-
vector<int> res(nums1.size(), -1);
13-
for (int i = 0; i < nums2.size(); ++i)
11+
string c = "";
12+
while (i >= 0 || j >= 0 || carry != 0)
1413
{
15-
while (!descendingNums.empty() && nums2[i] > descendingNums.top())
14+
if (i >= 0 && a[i] == '1')
15+
++carry;
16+
if (j >= 0 && b[j] == '1')
17+
++carry;
18+
19+
c = to_string(carry % 2) + c;
20+
carry /= 2;
21+
--i;
22+
--j;
23+
}
24+
return c;
25+
}
26+
27+
int decodeWays(string s)
28+
{
29+
vector<int> dp(s.size() + 1, 1);
30+
for (int i = s.size() - 1; i >= 0; --i)
31+
{
32+
if (s[i] == '0')
1633
{
17-
res[nums1Hash[descendingNums.top()]] = nums2[i];
18-
descendingNums.pop();
34+
dp[i] = 0;
35+
continue;
1936
}
20-
if (nums1Hash.count(nums2[i]) > 0)
21-
descendingNums.push(nums2[i]);
37+
dp[i] = dp[i + 1];
38+
if (i < s.size() - 1 && (s[i] == '1' || (s[i] == '2' && int(s[i + 1]) <= 54)))
39+
dp[i] += dp[i + 2];
2240
}
23-
24-
return res;
41+
return dp[0];
2542
}
2643

2744
int main()
2845
{
29-
vector<int> nums1({4, 1, 2});
30-
vector<int> nums2({1, 3, 4, 2});
31-
displayVector(nextGreaterElement1(nums1, nums2));
46+
cout << decodeWays("11106");
3247
return 0;
3348
}

0 commit comments

Comments
 (0)