Skip to content

Commit bfe09c5

Browse files
committed
Codeforces Round 684 - Problem A, B, C
1 parent 2ebcb60 commit bfe09c5

File tree

3 files changed

+224
-0
lines changed

3 files changed

+224
-0
lines changed

Codeforces/1440A.cpp

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#include <bits/stdc++.h>
2+
3+
#define MX 1e4+5
4+
5+
using namespace std;
6+
7+
typedef pair<int, int> pii;
8+
typedef vector<int> vi;
9+
typedef vector<pii> vii;
10+
11+
12+
void solve() {
13+
//
14+
int n, c0, c1, h;
15+
cin >> n >> c0 >> c1 >> h;
16+
17+
string s;
18+
cin >> s;
19+
20+
int cnt1 = 0;
21+
for(char ch: s) {
22+
if(ch == '1')
23+
cnt1++;
24+
}
25+
int cnt0 = n - cnt1;
26+
27+
int price0 = cnt1 * h + n * c0;
28+
int price1 = cnt0 * h + n * c1;
29+
int price2 = cnt0 * c0 + cnt1 * c1;
30+
cout << min(min(price0, price1)) << "\n";
31+
}
32+
33+
34+
int main() {
35+
36+
int T;
37+
cin >> T;
38+
while(T--)
39+
solve();
40+
41+
return 0;
42+
}

Codeforces/1440B.cpp

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
#include <bits/stdc++.h>
2+
3+
#define MX 1e4+5
4+
5+
using namespace std;
6+
7+
typedef pair<int, int> pii;
8+
typedef vector<int> vi;
9+
typedef vector<pii> vii;
10+
11+
12+
void solve() {
13+
//
14+
int n, k;
15+
cin >> n >> k;
16+
17+
int ll = n * k;
18+
vi a(ll);
19+
for(int i = 0; i < ll; i++)
20+
cin >> a[i];
21+
22+
23+
if(n <= 2) {
24+
long long sum = 0;
25+
for(int i = 0; i < ll; i += n)
26+
sum += a[i];
27+
cout << sum << "\n";
28+
return;
29+
}
30+
31+
int ss = int(n / 2) + n % 2 - 1;
32+
int bb = n - ss;
33+
34+
//cout << "sb: " << ss << " - " << bb << "\n";
35+
36+
long long sum = 0;
37+
for(int i = ss * k; i < ll; i += bb) {
38+
//cout << "x: " << a[i] << "\n";
39+
sum += a[i];
40+
}
41+
42+
cout << sum << "\n";
43+
}
44+
45+
46+
int main() {
47+
48+
int T;
49+
cin >> T;
50+
while(T--)
51+
solve();
52+
53+
return 0;
54+
}

Codeforces/1440C.cpp

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
#include <bits/stdc++.h>
2+
3+
#define MX 1e4+5
4+
5+
using namespace std;
6+
7+
typedef pair<int, int> pii;
8+
typedef vector<int> vi;
9+
typedef vector<pii> vii;
10+
typedef vector<vi> vvi;
11+
12+
13+
14+
15+
void solve2(int i, int j, int isign, int jsign, vector<vii> &result) {
16+
vii ll;
17+
ll.push_back({i, j});
18+
ll.push_back({i+isign, j});
19+
ll.push_back({i+isign, j+jsign});
20+
result.push_back(ll);
21+
ll.clear();
22+
ll.push_back({i+isign, j+jsign});
23+
ll.push_back({i, j+jsign});
24+
ll.push_back({i, j});
25+
result.push_back(ll);
26+
ll.clear();
27+
ll.push_back({i+isign, j});
28+
ll.push_back({i, j});
29+
ll.push_back({i, j+jsign});
30+
result.push_back(ll);
31+
ll.clear();
32+
}
33+
34+
void solve() {
35+
//
36+
int n, m;
37+
cin >> n >> m;
38+
39+
vector<vi> a;
40+
for(int i = 0; i < n; i++) {
41+
string s;
42+
cin >> s;
43+
44+
vi ll;
45+
for(char ch: s)
46+
ll.push_back(int(ch-'0'));
47+
a.push_back(ll);
48+
}
49+
50+
vector<vii> result;
51+
// remove all possible 3-ones in each 2x2 square
52+
for(int i = 0; i < n-1; i++)
53+
for(int j = 0; j < m-1; j++) {
54+
int count1 = a[i][j] + a[i][j+1] + a[i+1][j] + a[i+1][j+1];
55+
if(count1 == 3) {
56+
vii ll;
57+
for(int ii = 0; ii <= 1; ii++)
58+
for(int jj = 0; jj <= 1; jj++)
59+
if(a[i+ii][j+jj])
60+
ll.push_back({i+ii, j+jj});
61+
result.push_back(ll);
62+
a[i][j] = a[i][j+1] = a[i+1][j] = a[i+1][j+1] = 0;
63+
} else if(count1 == 4) {
64+
vii ll;
65+
ll.push_back({i, j});
66+
ll.push_back({i, j+1});
67+
ll.push_back({i+1, j});
68+
result.push_back(ll);
69+
a[i][j] = a[i][j+1] = a[i+1][j] = 0;
70+
}
71+
}
72+
73+
// solve for 1 or 2 ones in 2x2 square
74+
for(int i = 0; i < n-1; i++)
75+
for(int j = 0; j < m-1; j++) {
76+
int count1 = a[i][j] + a[i][j+1] + a[i+1][j] + a[i+1][j+1];
77+
if(count1 == 1) {
78+
if(a[i][j]) {
79+
a[i][j] = 0;
80+
solve2(i, j, 1, 1, result);
81+
} else if(a[i][j+1]) {
82+
a[i][j+1] = 0;
83+
solve2(i, j+1, 1, -1, result);
84+
} else if(a[i+1][j]) {
85+
a[i+1][j] = 0;
86+
solve2(i+1, j, -1, 1, result);
87+
} else if(a[i+1][j+1]) {
88+
a[i+1][j+1] = 0;
89+
solve2(i+1, j+1, -1, -1, result);
90+
}
91+
} else if(count1 == 2) {
92+
vii l0, l1;
93+
for(int ii = 0; ii <= 1; ii++)
94+
for(int jj = 0; jj <= 1; jj++)
95+
if(a[i+ii][j+jj]) {
96+
l1.push_back({i+ii, j+jj});
97+
a[i+ii][j+jj] = 0;
98+
} else
99+
l0.push_back({i+ii, j+jj});
100+
l1.push_back(l0[0]);
101+
result.push_back(l1);
102+
int isign = -1, jsign = -1;
103+
if(l0[0].first == 0) isign = 1;
104+
if(l0[0].second == 0) jsign = 1;
105+
solve2(l0[0].first, l0[0].second, isign, jsign, result);
106+
}
107+
}
108+
109+
cout << result.size() << "\n";
110+
for(vii lres: result) {
111+
for(pii x: lres)
112+
cout << x.first+1 << " " << x.second+1 << " ";
113+
cout << "\n";
114+
}
115+
116+
}
117+
118+
119+
int main() {
120+
//
121+
ios_base::sync_with_stdio(false);
122+
int T;
123+
cin >> T;
124+
while(T--)
125+
solve();
126+
127+
return 0;
128+
}

0 commit comments

Comments
 (0)