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 cd7cf91

Browse files
committed
Codeforces Round #314 (Div. 2)
1 parent 8f6eaef commit cd7cf91

File tree

4 files changed

+199
-0
lines changed

4 files changed

+199
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#include <bits/stdc++.h>
2+
#include <cmath>
3+
using namespace std;
4+
5+
typedef long long int64;
6+
#define endl ('\n')
7+
8+
const int
9+
MAXN = 1 << 17,
10+
INF = 2000000005;
11+
12+
int N;
13+
int x[MAXN];
14+
15+
int main() {
16+
ios_base::sync_with_stdio(0);
17+
#ifndef LOCAL
18+
cin.tie(0);
19+
#endif
20+
21+
cin >> N;
22+
for (int i = 0; i < N; ++i)
23+
cin >> x[i];
24+
25+
for (int i = 0; i < N; ++i) {
26+
int lo = +INF;
27+
int hi = -INF;
28+
if (i - 1 >= 0) lo = min(lo, abs(x[i] - x[i - 1]));
29+
if (i + 1 < N) lo = min(lo, abs(x[i] - x[i + 1]));
30+
if (i > 0) hi = max(hi, abs(x[i] - x[0]));
31+
if (i < N - 1) hi = max(hi, abs(x[i] - x[N - 1]));
32+
cout << lo << " " << hi << endl;
33+
}
34+
35+
return 0;
36+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#include <bits/stdc++.h>
2+
#include <cmath>
3+
using namespace std;
4+
5+
typedef long long int64;
6+
#define endl ('\n')
7+
8+
int N;
9+
bool inside[1 << 20];
10+
11+
int main() {
12+
ios_base::sync_with_stdio(0);
13+
#ifndef LOCAL
14+
cin.tie(0);
15+
#endif
16+
17+
cin >> N;
18+
19+
int maxDelta = 0;
20+
int minDelta = 0;
21+
int delta = 0;
22+
int before = 0;
23+
for (int i = 0; i < N; ++i) {
24+
string op;
25+
int id;
26+
cin >> op >> id;
27+
if (op == "+") {
28+
inside[id] = true;
29+
delta++;
30+
}
31+
else {
32+
delta--;
33+
if (!inside[id]) before++;
34+
inside[id] = false;
35+
}
36+
37+
maxDelta = max(maxDelta, delta);
38+
minDelta = max(minDelta, delta);
39+
}
40+
41+
int after = 0;
42+
for (int i = 1; i <= 1000000; ++i)
43+
after += inside[i];
44+
45+
cout << max(before + maxDelta, after) << endl;
46+
47+
return 0;
48+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#include <bits/stdc++.h>
2+
#include <cmath>
3+
using namespace std;
4+
5+
typedef long long int64;
6+
#define endl ('\n')
7+
8+
const int
9+
MAXN = 1 << 18;
10+
11+
int N;
12+
long long K;
13+
int a[MAXN];
14+
int cntL[MAXN];
15+
int cntR[MAXN];
16+
17+
int main() {
18+
ios_base::sync_with_stdio(0);
19+
#ifndef LOCAL
20+
cin.tie(0);
21+
#endif
22+
23+
map<long long, int> cnt;
24+
25+
26+
long long ans = 0;
27+
28+
cin >> N >> K;
29+
for (int i = 0; i < N; ++i)
30+
cin >> a[i];
31+
32+
for (int i = 0; i < N; ++i) {
33+
if (a[i] % K == 0)
34+
cntL[i] = cnt[ a[i] / K ];
35+
++cnt[ a[i] ];
36+
}
37+
38+
cnt.clear();
39+
40+
for (int i = N - 1; i >= 0; --i) {
41+
cntR[i] = cnt[ a[i] * K ];
42+
++cnt[ a[i] ];
43+
}
44+
45+
for (int i = 0; i < N; ++i)
46+
ans += cntL[i] * (1LL) * cntR[i];
47+
48+
cout << ans << endl;
49+
50+
return 0;
51+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
#include <bits/stdc++.h>
2+
#include <cmath>
3+
using namespace std;
4+
5+
typedef long long int64;
6+
#define endl ('\n')
7+
8+
const int
9+
MAXM = 1 << 18;
10+
11+
int N, K, A;
12+
int M;
13+
int x[MAXM];
14+
int s[MAXM];
15+
16+
bool ok(int m) {
17+
for (int i = 1; i <= N; ++i)
18+
s[i] = 0;
19+
20+
for (int i = 0; i <= m; ++i)
21+
s[ x[i] ]++;
22+
23+
int curStreak = 0;
24+
int total = 0;
25+
for (int i = 1; i <= N; ++i)
26+
if (s[i] > 0) {
27+
total += (curStreak+1) / (A+1);
28+
curStreak = 0;
29+
} else
30+
curStreak++;
31+
32+
total += (curStreak+1) / (A+1);
33+
34+
return total < K;
35+
}
36+
37+
int main() {
38+
ios_base::sync_with_stdio(0);
39+
#ifndef LOCAL
40+
cin.tie(0);
41+
#endif
42+
43+
cin >> N >> K >> A;
44+
cin >> M;
45+
for (int i = 0; i < M; ++i)
46+
cin >> x[i];
47+
48+
int lo = 0, hi = M - 1;
49+
while (lo <= hi) {
50+
int mid = (lo + hi) / 2;
51+
if (ok(mid))
52+
hi = mid - 1;
53+
else
54+
lo = mid + 1;
55+
}
56+
57+
int ans = hi + 1;
58+
if (ans >= M) cout << -1 << endl;
59+
else
60+
cout << ans+1 << endl;
61+
62+
63+
return 0;
64+
}

0 commit comments

Comments
(0)

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