Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit a3b3892

Browse files
Added problems
1 parent 189611d commit a3b3892

File tree

2 files changed

+140
-0
lines changed

2 files changed

+140
-0
lines changed

‎array_division.cpp‎

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
typedef long int li;
6+
typedef long long int lli;
7+
typedef vector<long long int> vlli;
8+
typedef vector<int> vi;
9+
typedef stack<long long int> slli;
10+
11+
bool check(lli mid, vlli &numbers, lli buckets)
12+
{
13+
14+
lli sum = 0;
15+
lli count = 0;
16+
17+
for (auto num : numbers)
18+
{
19+
20+
if (num > mid)
21+
{
22+
return false;
23+
}
24+
25+
sum += num;
26+
27+
if (sum > mid)
28+
{
29+
count++;
30+
sum = num;
31+
}
32+
}
33+
34+
count++;
35+
36+
return count <= buckets;
37+
}
38+
39+
void task()
40+
{
41+
42+
lli lenNumbers, lenBuckets;
43+
cin >> lenNumbers >> lenBuckets;
44+
45+
vlli numbers(lenNumbers);
46+
47+
for (lli i = 0; i < lenNumbers; i++)
48+
cin >> numbers[i];
49+
50+
lli l = *max_element(numbers.begin(), numbers.end());
51+
lli h = accumulate(numbers.begin(), numbers.end(), 0);
52+
lli mid;
53+
lli ans = INT_MAX;
54+
55+
if (lenBuckets == 1)
56+
{
57+
cout << h << '\n';
58+
return;
59+
}
60+
61+
while (l <= h)
62+
{
63+
64+
lli mid = l + (h - l) / 2;
65+
66+
if (check(mid, numbers, lenBuckets))
67+
{
68+
ans = min(ans, mid);
69+
h = mid - 1;
70+
}
71+
else
72+
{
73+
l = mid + 1;
74+
}
75+
}
76+
77+
cout << ans << '\n';
78+
}
79+
80+
int main()
81+
{
82+
83+
ios::sync_with_stdio(0);
84+
cin.tie(0);
85+
86+
task();
87+
88+
return 0;
89+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
typedef long int li;
6+
typedef long long int lli;
7+
typedef vector<long long int> vlli;
8+
typedef vector<int> vi;
9+
typedef stack<long long int> slli;
10+
11+
void task()
12+
{
13+
14+
lli lenNumbers;
15+
cin >> lenNumbers;
16+
17+
lli cumSum = 0;
18+
vector<lli> mod(lenNumbers, 0);
19+
20+
lli temp;
21+
22+
for(lli i = 0; i < lenNumbers; i++) {
23+
cin>>temp;
24+
cumSum += temp;
25+
mod[((cumSum % lenNumbers) + lenNumbers ) % lenNumbers]++;
26+
}
27+
28+
lli ans = 0;
29+
30+
for(lli i = 0; i < lenNumbers; i++) {
31+
if(mod[i] > 1) {
32+
ans += (mod[i] * (mod[i] - 1))/2;
33+
}
34+
}
35+
36+
ans += mod[0];
37+
38+
cout<<ans<<'\n';
39+
40+
}
41+
42+
int main()
43+
{
44+
45+
ios::sync_with_stdio(0);
46+
cin.tie(0);
47+
48+
task();
49+
50+
return 0;
51+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /