Skip to content

Commit 7ae9ce8

Browse files
committed
cf round 688 problem a, b, c
1 parent 958cb59 commit 7ae9ce8

File tree

3 files changed

+292
-0
lines changed

3 files changed

+292
-0
lines changed

Codeforces/1453A.cpp

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#include <bits/stdc++.h>
2+
3+
#define rep(i,a) for(int i=0; i<n; i++)
4+
#define rrep(i,a) for(int i=a-1; i>=0; i--)
5+
#define range(i,a,b) for(int i=a; i<b; i++)
6+
#define rrange(i,a,b) for(int i=a-1; i>=b; i--)
7+
#define MX 1e4+5
8+
9+
using namespace std;
10+
11+
typedef pair<int, int> pii;
12+
typedef vector<int> vi;
13+
typedef vector<pii> vii;
14+
typedef vector<vi> vvi;
15+
16+
17+
void run_case() {
18+
19+
int n, m;
20+
cin >> n >> m;
21+
22+
vi a(101, 0);
23+
for(int i = 0; i < n; i++) {
24+
int x;
25+
cin >> x;
26+
a[x]++;
27+
}
28+
for(int i = 0; i < m; i++) {
29+
int x;
30+
cin >> x;
31+
a[x]++;
32+
}
33+
int result = 0;
34+
for(int i = 1; i <= 100; i++)
35+
if(a[i] == 2)
36+
result++;
37+
cout << result << "\n";
38+
39+
}
40+
41+
int main() {
42+
ios::sync_with_stdio(false);
43+
44+
int tests;
45+
cin >> tests;
46+
47+
while (tests-- > 0)
48+
run_case();
49+
}

Codeforces/1453B.cpp

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
#include <bits/stdc++.h>
2+
3+
#define rep(i,a) for(int i=0; i<n; i++)
4+
#define rrep(i,a) for(int i=a-1; i>=0; i--)
5+
#define range(i,a,b) for(int i=a; i<b; i++)
6+
#define rrange(i,a,b) for(int i=a-1; i>=b; i--)
7+
#define MX 1e4+5
8+
9+
using namespace std;
10+
11+
typedef pair<int, int> pii;
12+
typedef vector<int> vi;
13+
typedef vector<pii> vii;
14+
typedef vector<vi> vvi;
15+
16+
17+
long maxx(long a, long b) {
18+
if(a > b)
19+
return a;
20+
return b;
21+
}
22+
23+
24+
void run_case() {
25+
26+
int n;
27+
cin >> n;
28+
29+
vi a(n);
30+
rep(i, n)
31+
cin >> a[i];
32+
33+
if(n == 2) {
34+
cout << "0\n";
35+
return;
36+
}
37+
38+
vi diff2(n+1, 0);
39+
diff2[0] = 0;
40+
range(i, 0, n-1)
41+
diff2[i+1] = abs(a[i + 1] - a[i]);
42+
diff2[n] = 0;
43+
44+
vi diff3(n, 0);
45+
diff3[0] = 0;
46+
range(i, 0, n - 2)
47+
diff3[i+1] = abs(a[i + 2] - a[i]);
48+
diff3[n-1] = 0;
49+
50+
51+
//cout << "diff2: ";
52+
//for(int x: diff2)
53+
//cout << x << " ";
54+
//cout << "\n";
55+
//cout << "diff3: ";
56+
//for(int x: diff3)
57+
//cout << x << " ";
58+
//cout << "\n";
59+
60+
long mx = -1;
61+
long sum = 0;
62+
range(i, 0, n-1) {
63+
sum += diff2[i+1];
64+
long x = diff2[i] + diff2[i+1];
65+
mx = maxx(mx, abs(x-diff3[i]));
66+
}
67+
68+
//cout << "sum: " << sum << " " << mx << "\n";
69+
70+
cout << sum - mx << "\n";
71+
72+
}
73+
74+
int main() {
75+
ios::sync_with_stdio(false);
76+
77+
int tests;
78+
cin >> tests;
79+
80+
while (tests-- > 0)
81+
run_case();
82+
}

Codeforces/1453C.cpp

Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
#include <bits/stdc++.h>
2+
3+
#define rep(i,a) for(int i=0; i<a; i++)
4+
#define rrep(i,a) for(int i=a-1; i>=0; i--)
5+
#define range(i,a,b) for(int i=a; i<b; i++)
6+
#define rrange(i,a,b) for(int i=a-1; i>=b; i--)
7+
#define MX 1e4+5
8+
9+
using namespace std;
10+
11+
typedef pair<int, int> pii;
12+
typedef vector<int> vi;
13+
typedef vector<pii> vii;
14+
typedef vector<vi> vvi;
15+
16+
17+
class Point {
18+
public:
19+
int mnx, mnv, mxx, mxv;
20+
Point() {
21+
mnx = INT_MAX;
22+
mnv = INT_MAX;
23+
mxx = INT_MIN;
24+
mxv = INT_MIN;
25+
};
26+
};
27+
28+
void run_case() {
29+
30+
int n;
31+
cin >> n;
32+
33+
vector<Point> a(11, Point()), b(11, Point());
34+
vi cnt(10, 0);
35+
36+
for(int i=0; i<n; i++) {
37+
string ss;
38+
cin >> ss;
39+
for(int j = 0; j < n; j++) {
40+
int x = int(ss[j] - '0');
41+
cnt[x]++;
42+
if(i < a[x].mnx) {
43+
a[x].mnx = i;
44+
a[x].mnv = j;
45+
}
46+
if(i > a[x].mxx) {
47+
a[x].mxx = i;
48+
a[x].mxv = j;
49+
}
50+
if(j < b[x].mnv) {
51+
b[x].mnx = i;
52+
b[x].mnv = j;
53+
}
54+
if(j > b[x].mxv) {
55+
b[x].mxx = i;
56+
b[x].mxv = j;
57+
}
58+
}
59+
}
60+
61+
cout << "cnt: ";
62+
for(int x: cnt)
63+
cout << x << " ";
64+
cout << "\n";
65+
66+
vi area(10, 0);
67+
rep(i, 10) {
68+
if(cnt[i] < 2)
69+
continue;
70+
71+
int dx = abs(a[i].mxx - a[i].mnx);
72+
int dv = abs(a[i].mxv - a[i].mnv);
73+
74+
if(dx == 0 && dv == 0)
75+
continue;
76+
77+
//cout << "a: " << i << " " << dx << " " << dv << "\n";
78+
79+
if(dx == 0) {
80+
int ff =max(a[i].mxx - 0, n - 1 - a[i].mxx);
81+
area[i] = dv * ff;
82+
} else if(dv == 0) {
83+
int ff =max(a[i].mxv - 0, n - 1 - a[i].mxv);
84+
area[i] = dx * ff;
85+
} else {
86+
int ff1 = max(a[i].mxx - 0, n - 1 - a[i].mxx);
87+
int ff2 = max(a[i].mnx - 0, n - 1 - a[i].mnx);
88+
int ff = max(ff1, ff2);
89+
int a1 = dv * ff;
90+
int fff1 =max(a[i].mxv - 0, n - 1 - a[i].mxv);
91+
int fff2 = max(a[i].mnv - 0, n - 1 - a[i].mnv);
92+
int fff = max(fff1, fff2);
93+
int a2 = dx * fff;
94+
area[i] = max(a1, a2);
95+
if(n-ff1 == 0 || ff1 == 0 || n-ff2 == 0 || ff2 == 0)
96+
area[i] = max(area[i], ff1 * ff2);
97+
if(n-fff1 == 0 || fff1 == 0 || n-fff2 == 0 || fff2 == 0)
98+
area[i] = max(area[i], fff1 * fff2);
99+
}
100+
}
101+
102+
vi area2(10, 0);
103+
rep(i, 10) {
104+
if(cnt[i] < 2)
105+
continue;
106+
107+
int dx = abs(b[i].mxx - b[i].mnx);
108+
int dv = abs(b[i].mxv - b[i].mnv);
109+
110+
if(dx == 0 && dv == 0)
111+
continue;
112+
113+
//cout << "b: " << i << " " << dx << " " << dv << "\n";
114+
115+
if(dx == 0) {
116+
int ff =max(b[i].mxx - 0, n - 1 - b[i].mxx);
117+
area2[i] = dv * ff;
118+
} else if(dv == 0) {
119+
int ff =max(b[i].mxv - 0, n - 1 - b[i].mxv);
120+
area2[i] = dx * ff;
121+
} else {
122+
int ff1 = max(b[i].mxx - 0, n - 1 - b[i].mxx);
123+
int ff2 = max(b[i].mnx - 0, n - 1 - b[i].mnx);
124+
int ff = max(ff1, ff2);
125+
int a1 = dv * ff;
126+
int fff1 =max(b[i].mxv - 0, n - 1 - b[i].mxv);
127+
int fff2 = max(b[i].mnv - 0, n - 1 - b[i].mnv);
128+
int fff = max(fff1, fff2);
129+
int a2 = dx * fff;
130+
area2[i] = max(a1, a2);
131+
if(n-ff1 == 0 || ff1 == 0 || n-ff2 == 0 || ff2 == 0)
132+
area2[i] = max(area2[i], ff1 * ff2);
133+
if(n-fff1 == 0 || fff1 == 0 || n-fff2 == 0 || fff2 == 0)
134+
area2[i] = max(area2[i], fff1 * fff2);
135+
}
136+
}
137+
138+
139+
//for(int x: area)
140+
//cout << x << " ";
141+
//cout << "\n";
142+
//for(int x: area2)
143+
//cout << x << " ";
144+
//cout << "\n";
145+
146+
rep(i, 10)
147+
cout << max(area[i], area2[i]) << " ";
148+
cout << "\n";
149+
150+
151+
}
152+
153+
int main() {
154+
ios::sync_with_stdio(false);
155+
156+
int tests;
157+
cin >> tests;
158+
159+
while (tests-- > 0)
160+
run_case();
161+
}

0 commit comments

Comments
 (0)