Skip to content

Commit 729aa6c

Browse files
author
coderxiang
committed
CF 205
1 parent 1bae410 commit 729aa6c

File tree

4 files changed

+215
-0
lines changed

4 files changed

+215
-0
lines changed

Codeforces/205/353A_205.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
n = input ()
2+
su, sd = 0, 0
3+
eo, oe = False, False
4+
for i in xrange (n):
5+
[a, b] = map (int, raw_input().split())
6+
su += a
7+
sd += b
8+
if a % 2 == 0 and b % 2 == 1:
9+
eo = True
10+
if a % 2 == 1 and b % 2 == 0:
11+
oe = True
12+
13+
14+
if su % 2 == 0 and sd % 2 == 0:
15+
print 0
16+
elif su % 2 == 1 and sd % 2 == 1:
17+
if eo or oe:
18+
print 1
19+
else:
20+
print -1
21+
else:
22+
print -1
23+
24+
25+

Codeforces/205/353B_205.cpp

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <queue>
4+
#include <string>
5+
#include <list>
6+
#include <set>
7+
#include <map>
8+
#include <sstream>
9+
#include <algorithm>
10+
#include <cstring>
11+
#include <cmath>
12+
#include <ctime>
13+
#include <cstdio>
14+
#include <cassert>
15+
16+
using namespace std;
17+
18+
typedef long long ll;
19+
typedef pair<int,int> PII;
20+
typedef vector<int> VI;
21+
typedef vector<string> VS;
22+
#define pb push_back
23+
#define mp make_pair
24+
#define ff first
25+
#define ss second
26+
#define sz(v) (int)v.size()
27+
#define clr(x, v) memset(x, v, sizeof(x))
28+
#define rep(i, l, u) for(int i = (l); i < (u); i++)
29+
#define repv(i, v) for(i = 0; i < (int)v.size(); i++)
30+
#define repi(it, c) for(typeof(c.begin()) it = c.begin(); it != c.end(); ++it)
31+
32+
const int N = 111;
33+
34+
35+
vector<PII> a;
36+
int ans[N*2];
37+
38+
bool st1[N], st2[N], st[2*N];
39+
40+
int main () {
41+
int n, i, j, k;
42+
scanf ("%d", &n);
43+
for (i = 1; i <= 2 * n; ++i) {
44+
scanf ("%d", &j);
45+
a.pb(mp(j, i));
46+
}
47+
sort (a.begin(), a.end());
48+
int cnt1 = 0, cnt2 = 0;
49+
for (i = 0; i < 2 * n; ) {
50+
if (i < 2 * n - 1 && a[i].ff == a[i+1].ff) {
51+
cnt1++;
52+
cnt2++;
53+
st[i] = st[i+1] = true;
54+
ans[a[i].ss] = 1;
55+
ans[a[i+1].ss] = 2;
56+
st1[a[i].ff] = st2[a[i].ff] = true;
57+
while (i < 2 * n - 1 && a[i].ff == a[i+1].ff) i++;
58+
}
59+
i++;
60+
}
61+
for (i = 0; i < 2 * n; ++i) {
62+
if (i < 2 * n - 1 && a[i].ff == a[i+1].ff)
63+
while (i < 2 * n - 1 && a[i].ff == a[i+1].ff) i++;
64+
else {
65+
ans[a[i].ss] = (cnt1 <= cnt2 ? (st1[a[i].ff] = true, ++cnt1, 1) : (st2[a[i].ff] = true, ++cnt2, 2));
66+
st[i] = true;
67+
}
68+
}
69+
for (i = 0; i < 2 * n; ++i)
70+
if (!st[i]) {
71+
ans[a[i].ss] = (cnt1 <= cnt2 ? (st1[a[i].ff] = true, ++cnt1, 1) : (st2[a[i].ff] = true, ++cnt2, 2));
72+
}
73+
74+
int s1 = 0, s2 = 0;
75+
for (i = 10; i <= 99; ++i){
76+
s1 += st1[i];
77+
s2 += st2[i];
78+
}
79+
printf("%d\n", s1 * s2);
80+
for (i = 1; i <= 2 * n; ++i)
81+
printf("%d%c", ans[i], i == 2 * n ? '\n': ' ');
82+
return 0;
83+
}
84+

Codeforces/205/353C_205.cpp

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <queue>
4+
#include <string>
5+
#include <list>
6+
#include <set>
7+
#include <map>
8+
#include <sstream>
9+
#include <algorithm>
10+
#include <cstring>
11+
#include <cmath>
12+
#include <ctime>
13+
#include <cstdio>
14+
#include <cassert>
15+
16+
using namespace std;
17+
18+
typedef long long ll;
19+
typedef pair<int,int> PII;
20+
typedef vector<int> VI;
21+
typedef vector<string> VS;
22+
#define pb push_back
23+
#define mp make_pair
24+
#define ff first
25+
#define ss second
26+
#define sz(v) (int)v.size()
27+
#define clr(x, v) memset(x, v, sizeof(x))
28+
#define rep(i, l, u) for(int i = (l); i < (u); i++)
29+
#define repv(i, v) for(i = 0; i < (int)v.size(); i++)
30+
#define repi(it, c) for(typeof(c.begin()) it = c.begin(); it != c.end(); ++it)
31+
32+
/*
33+
const int N = 100011;
34+
35+
int a[N], s[N], n, d[N];
36+
37+
int main () {
38+
int n, i, j, k;
39+
scanf ("%d", &n);
40+
for (i = 1; i <= n; ++i) {
41+
scanf ("%d", &a[i]);
42+
s[i] = s[i - 1] + a[i];
43+
}
44+
int last = 0;
45+
for (i = 1; i <= n; ++i) {
46+
scanf ("%1d", &k);
47+
if (k == 0) continue;
48+
d[k] = max (s[i-1], a[i] + d[last]);
49+
last = k;
50+
}
51+
printf ("%d\n", d[last]);
52+
return 0;
53+
}
54+
*/

Codeforces/205/353D_205.cpp

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <queue>
4+
#include <string>
5+
#include <list>
6+
#include <set>
7+
#include <map>
8+
#include <sstream>
9+
#include <algorithm>
10+
#include <cstring>
11+
#include <cmath>
12+
#include <ctime>
13+
#include <cstdio>
14+
#include <cassert>
15+
16+
using namespace std;
17+
18+
typedef long long ll;
19+
typedef pair<int,int> PII;
20+
typedef vector<int> VI;
21+
typedef vector<string> VS;
22+
#define pb push_back
23+
#define mp make_pair
24+
#define ff first
25+
#define ss second
26+
#define sz(v) (int)v.size()
27+
#define clr(x, v) memset(x, v, sizeof(x))
28+
#define rep(i, l, u) for(int i = (l); i < (u); i++)
29+
#define repv(i, v) for(i = 0; i < (int)v.size(); i++)
30+
#define repi(it, c) for(typeof(c.begin()) it = c.begin(); it != c.end(); ++it)
31+
32+
const int N = 1000011;
33+
34+
/*
35+
int main () {
36+
int i, j, k, sn, cntM = 0, ans = 0, lastF = 0;
37+
string s, t;
38+
cin >> s;
39+
sn = s.length();
40+
for (i = 0; i < sn && s[i] == 'F'; ++i);
41+
for (; i < sn; ++i) {
42+
if (s[i] == 'M')
43+
cntM++;
44+
else {
45+
lastF = max (lastF + 1, cntM);
46+
ans = max(ans, lastF);
47+
}
48+
}
49+
printf ("%d\n", ans);
50+
return 0;
51+
}
52+
*/

0 commit comments

Comments
 (0)