File tree Expand file tree Collapse file tree 5 files changed +138
-1
lines changed
Codeforces/Educational Round/69 Expand file tree Collapse file tree 5 files changed +138
-1
lines changed Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change @@ -102,5 +102,9 @@ int main()
102
102
}
103
103
}
104
104
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
+ }
106
110
}
You can’t perform that action at this time.
0 commit comments