Skip to content

Commit 7c6fde0

Browse files
committed
edu round 69
1 parent 178af64 commit 7c6fde0

File tree

5 files changed

+138
-1
lines changed

5 files changed

+138
-1
lines changed

Codeforces/Educational Round/69/A.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#include <iostream>
2+
#include <algorithm>
3+
#include <vector>
4+
5+
using namespace std;
6+
7+
int main()
8+
{
9+
int T;
10+
for(cin >> T; T > 0; T--)
11+
{
12+
int n, num;
13+
vector<int> planks;
14+
15+
cin >> n;
16+
for(int i = 0; i < n; i++)
17+
{
18+
cin >> num;
19+
planks.push_back(num);
20+
}
21+
22+
sort(planks.begin(), planks.end());
23+
int b1 = planks.back(), b2 = planks[n - 2];
24+
25+
cout << min(min(b1, b2) - 1, n - 2) << '\n';
26+
}
27+
}

Codeforces/Educational Round/69/B.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#include <iostream>
2+
3+
using namespace std;
4+
5+
int n, disks[200002];
6+
7+
int main()
8+
{
9+
int mx[2] = { 0, 0 };
10+
11+
cin >> n;
12+
for(int i = 0; i < n; i++)
13+
{
14+
cin >> disks[i];
15+
if(mx[0] < disks[i])
16+
{
17+
mx[0] = disks[i];
18+
mx[1] = i;
19+
}
20+
}
21+
22+
bool flag = true;
23+
for(int i = 0; flag && i < mx[1]; i++)
24+
{
25+
if(disks[i] > disks[i + 1]) flag = false;
26+
}
27+
28+
for(int i = mx[1]; flag && i < n - 1; i++)
29+
{
30+
if(disks[i] < disks[i + 1]) flag = false;
31+
}
32+
33+
cout << (flag ? "YES" : "NO") << '\n';
34+
}

Codeforces/Educational Round/69/C.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#include <iostream>
2+
#include <algorithm>
3+
#include <queue>
4+
5+
using namespace std;
6+
7+
typedef long long ll;
8+
9+
int n, k, a[300002];
10+
ll ans;
11+
12+
int main()
13+
{
14+
priority_queue<int> pq;
15+
cin >> n >> k;
16+
for(int i = 0; i < n; i++) cin >> a[i];
17+
for(int i = 0; i < n - 1; i++) pq.push(a[i + 1] - a[i]);
18+
19+
ans += a[n - 1] - a[0];
20+
for(; k > 1; k--)
21+
{
22+
int t = pq.top(); pq.pop();
23+
ans -= t;
24+
}
25+
26+
cout << ans << '\n';
27+
}

Codeforces/Educational Round/69/D.cpp

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#include <iostream>
2+
#include <algorithm>
3+
#include <cmath>
4+
#include <climits>
5+
6+
using namespace std;
7+
8+
typedef long long ll;
9+
10+
int n, m, k, a[300002];
11+
ll ans, cache[300002];
12+
13+
ll dp(int idx)
14+
{
15+
ll& ret = cache[idx];
16+
if(ret != LLONG_MIN) return ret;
17+
if(idx == n - 1) return ret = a[idx] - k;
18+
19+
ll sum = 0;
20+
for(int i = 0; i < n && i < m; i++)
21+
{
22+
sum += a[idx + i];
23+
ret = max(ret, sum - k);
24+
}
25+
26+
if(idx + m >= n) return ret;
27+
else return ret = max(ret, sum - k + dp(idx + m));
28+
}
29+
30+
int main()
31+
{
32+
cin >> n >> m >> k;
33+
for(int i = 0; i < n; i++) {
34+
cin >> a[i];
35+
cache[i] = LLONG_MIN;
36+
}
37+
38+
for(int i = 0; i < n; i++)
39+
{
40+
// cout << i << ' ' << dp(i) << '\n';
41+
ans = max(ans, dp(i));
42+
}
43+
44+
cout << ans << '\n';
45+
}

baekjoon/1396.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,5 +102,9 @@ int main()
102102
}
103103
}
104104

105-
for(int i = 0; i < q; i++) cout << Q[i].ans[0] << ' ' << Q[i].ans[1] << '\n';
105+
for(int i = 0; i < q; i++)
106+
{
107+
if(Q[i].ans[0] != 0) cout << Q[i].ans[0] << ' ' << Q[i].ans[1] << '\n';
108+
else cout << -1 << '\n';
109+
}
106110
}

0 commit comments

Comments
 (0)