Skip to content

Commit d50f053

Browse files
committed
Google Codejam 2020 - Qualitifaction Round
1 parent b442ef2 commit d50f053

File tree

4 files changed

+493
-0
lines changed

4 files changed

+493
-0
lines changed
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
#define gc getchar_unlocked
4+
#define fo(i,n) for(i=0;i<n;i++)
5+
#define Fo(i,k,n) for(i=k;k<n?i<n:i>n;k<n?i+=1:i-=1)
6+
#define ll long long
7+
#define si(x) scanf("%d",&x)
8+
#define sl(x) scanf("%lld",&x)
9+
#define ss(s) scanf("%s",s)
10+
#define pi(x) printf("%d",x)
11+
#define pl(x) printf("%lld",x)
12+
#define ps(s) printf("%s",s)
13+
#define pnl() printf("\n")
14+
#define deb(x) cout << #x << "=" << x << endl
15+
#define deb2(x, y) cout << #x << "=" << x << "," << #y << "=" << y << endl
16+
#define pb push_back
17+
#define mp make_pair
18+
#define F first
19+
#define S second
20+
#define all(x) x.begin(), x.end()
21+
#define clr(x) memset(x, 0, sizeof(x))
22+
#define sortall(x) sort(all(x))
23+
#define tr(it, a) for(auto it = a.begin(); it != a.end(); it++)
24+
#define PI 3.1415926535897932384626
25+
typedef pair<int, int> pii;
26+
typedef pair<ll, ll> pl;
27+
typedef vector<int> vi;
28+
typedef vector<ll> vl;
29+
typedef vector<pii> vpii;
30+
typedef vector<pl> vpl;
31+
typedef vector<vi> vvi;
32+
typedef vector<vl> vvl;
33+
int mpow(int base, int exp);
34+
void ipgraph(int m);
35+
void dfs(int u, int par);
36+
const int mod = 1000000007;
37+
const int N = 130, M = N;
38+
//=======================
39+
40+
vi g[N];
41+
int a[N][N];
42+
int n;
43+
44+
int count(function<int(int, int)> get) {
45+
int c = 0, i, j;
46+
fo(i, n) {
47+
set<int> vis;
48+
fo(j, n) vis.insert(get(i, j));
49+
c += (int)vis.size() != n;
50+
}
51+
return c;
52+
}
53+
54+
int count_rows() {
55+
56+
}
57+
58+
int main() {
59+
ios_base::sync_with_stdio(0);
60+
int t, i, j, k, p, q, r, x, y, u, v, m, tt;
61+
si(t);
62+
fo(tt, t) {
63+
si(n);
64+
int trace = 0;
65+
fo(i, n)
66+
fo(j, n) {
67+
si(a[i][j]);
68+
if(i==j) trace += a[i][j];
69+
}
70+
71+
int r = count([](int i, int j) {return a[i][j];});
72+
int c = count([](int i, int j) {return a[j][i];});
73+
74+
ps("Case #"); pi(tt+1); ps(": ");
75+
pi(trace); ps(" ");
76+
pi(r); ps(" ");
77+
pi(c); pnl();
78+
}
79+
return 0;
80+
}
81+
82+
int mpow(int base, int exp) {
83+
base %= mod;
84+
int result = 1;
85+
while (exp > 0) {
86+
if (exp & 1) result = ((ll)result * base) % mod;
87+
base = ((ll)base * base) % mod;
88+
exp >>= 1;
89+
}
90+
return result;
91+
}
92+
93+
void ipgraph(int n, int m){
94+
int i, u, v;
95+
while(m--){
96+
cin>>u>>v;
97+
g[u-1].pb(v-1);
98+
g[v-1].pb(u-1);
99+
}
100+
}
101+
102+
void dfs(int u, int par){
103+
for(int v:g[u]){
104+
if (v == par) continue;
105+
dfs(v, u);
106+
}
107+
}
108+
109+
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
#define gc getchar_unlocked
4+
#define fo(i,n) for(i=0;i<n;i++)
5+
#define Fo(i,k,n) for(i=k;k<n?i<n:i>n;k<n?i+=1:i-=1)
6+
#define ll long long
7+
#define si(x) scanf("%d",&x)
8+
#define sl(x) scanf("%lld",&x)
9+
#define ss(s) scanf("%s",s)
10+
#define pi(x) printf("%d",x)
11+
#define pl(x) printf("%lld",x)
12+
#define ps(s) printf("%s",s)
13+
#define pnl() printf("\n")
14+
#define deb(x) cout << #x << "=" << x << endl
15+
#define deb2(x, y) cout << #x << "=" << x << "," << #y << "=" << y << endl
16+
#define pb push_back
17+
#define mp make_pair
18+
#define F first
19+
#define S second
20+
#define all(x) x.begin(), x.end()
21+
#define clr(x) memset(x, 0, sizeof(x))
22+
#define sortall(x) sort(all(x))
23+
#define tr(it, a) for(auto it = a.begin(); it != a.end(); it++)
24+
#define PI 3.1415926535897932384626
25+
typedef pair<int, int> pii;
26+
typedef pair<ll, ll> pl;
27+
typedef vector<int> vi;
28+
typedef vector<ll> vl;
29+
typedef vector<pii> vpii;
30+
typedef vector<pl> vpl;
31+
typedef vector<vi> vvi;
32+
typedef vector<vl> vvl;
33+
int mpow(int base, int exp);
34+
void ipgraph(int m);
35+
void dfs(int u, int par);
36+
const int mod = 1000000007;
37+
const int N = 18 * 103, M = N;
38+
//=======================
39+
vi g[N];
40+
41+
int main() {
42+
// ios_base::sync_with_stdio(0);
43+
int t, i, j, k, p, q, r, x, y, u, v, m, tt;
44+
si(t);
45+
fo(tt, t) {
46+
string s;
47+
cin >> s;
48+
vector<char> ans = {};
49+
int cur = 0;
50+
for(char c: s) {
51+
int x = c-'0';
52+
while(cur < x) ans.push_back('('), cur++;
53+
while(cur > x) ans.push_back(')'), cur--;
54+
ans.push_back(c);
55+
}
56+
while(cur) ans.push_back(')'), cur--;
57+
ps("Case #"); pi(tt+1); ps(": ");
58+
for(char c: ans) printf("%c",c);
59+
pnl();
60+
}
61+
return 0;
62+
}
63+
64+
int mpow(int base, int exp) {
65+
base %= mod;
66+
int result = 1;
67+
while (exp > 0) {
68+
if (exp & 1) result = ((ll)result * base) % mod;
69+
base = ((ll)base * base) % mod;
70+
exp >>= 1;
71+
}
72+
return result;
73+
}
74+
75+
void ipgraph(int n, int m){
76+
int i, u, v;
77+
while(m--){
78+
cin>>u>>v;
79+
g[u-1].pb(v-1);
80+
g[v-1].pb(u-1);
81+
}
82+
}
83+
84+
void dfs(int u, int par){
85+
for(int v:g[u]){
86+
if (v == par) continue;
87+
dfs(v, u);
88+
}
89+
}
90+
91+
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
#define gc getchar_unlocked
4+
#define fo(i,n) for(i=0;i<n;i++)
5+
#define Fo(i,k,n) for(i=k;k<n?i<n:i>n;k<n?i+=1:i-=1)
6+
#define ll long long
7+
#define si(x) scanf("%d",&x)
8+
#define sl(x) scanf("%lld",&x)
9+
#define ss(s) scanf("%s",s)
10+
#define pi(x) printf("%d",x)
11+
#define pl(x) printf("%lld",x)
12+
#define ps(s) printf("%s",s)
13+
#define pnl() printf("\n")
14+
#define deb(x) cout << #x << "=" << x << endl
15+
#define deb2(x, y) cout << #x << "=" << x << "," << #y << "=" << y << endl
16+
#define pb push_back
17+
#define mp make_pair
18+
#define F first
19+
#define S second
20+
#define all(x) x.begin(), x.end()
21+
#define clr(x) memset(x, 0, sizeof(x))
22+
#define sortall(x) sort(all(x))
23+
#define tr(it, a) for(auto it = a.begin(); it != a.end(); it++)
24+
#define PI 3.1415926535897932384626
25+
typedef pair<int, int> pii;
26+
typedef pair<ll, ll> pl;
27+
typedef vector<int> vi;
28+
typedef vector<ll> vl;
29+
typedef vector<pii> vpii;
30+
typedef vector<pl> vpl;
31+
typedef vector<vi> vvi;
32+
typedef vector<vl> vvl;
33+
int mpow(int base, int exp);
34+
void ipgraph(int m);
35+
void dfs(int u, int par);
36+
const int mod = 1000000007;
37+
const int N = 130, M = N;
38+
//=======================
39+
40+
vi g[N];
41+
int a[N][N];
42+
int n;
43+
bool f(tuple<int, int, int> &l, tuple<int, int, int> &r) {
44+
if(get<1>(l) != get<1>(r)) return get<1>(l) < get<1>(r);
45+
return get<0>(l) < get<0>(r);
46+
}
47+
48+
int main() {
49+
// ios_base::sync_with_stdio(0);
50+
int t, i, j, k, p, q, r, x, y, u, v, m, tt, idx;
51+
vector<char> rep = {'C', 'J'};
52+
si(t);
53+
fo(tt, t) {
54+
si(n);
55+
int imposs(0);
56+
vector<char> ans(n, -1);
57+
vector<tuple<int, int, int>> act;
58+
fo(i, n) {
59+
cin >> x >> y;
60+
act.push_back({x, y, i});
61+
}
62+
63+
sort(act.begin(), act.end(), f);
64+
int to = 0;
65+
int other = 1;
66+
vector<int> mx = {-1, -1};
67+
for(auto cur: act) {
68+
tie(x, y, idx) = cur;
69+
if(mx[to] <= x) {
70+
ans[idx] = to;
71+
mx[to] = y;
72+
}
73+
else if(mx[other] <= x) {
74+
ans[idx] = other;
75+
mx[other] = y;
76+
}
77+
else {
78+
imposs = 1;
79+
}
80+
}
81+
82+
ps("Case #"); pi(tt+1); ps(": ");
83+
if(imposs) printf("IMPOSSIBLE");
84+
else for(int x: ans) printf("%c", rep[x]);
85+
pnl();
86+
}
87+
return 0;
88+
}
89+
90+
int mpow(int base, int exp) {
91+
base %= mod;
92+
int result = 1;
93+
while (exp > 0) {
94+
if (exp & 1) result = ((ll)result * base) % mod;
95+
base = ((ll)base * base) % mod;
96+
exp >>= 1;
97+
}
98+
return result;
99+
}
100+
101+
void ipgraph(int n, int m){
102+
int i, u, v;
103+
while(m--){
104+
cin>>u>>v;
105+
g[u-1].pb(v-1);
106+
g[v-1].pb(u-1);
107+
}
108+
}
109+
110+
void dfs(int u, int par){
111+
for(int v:g[u]){
112+
if (v == par) continue;
113+
dfs(v, u);
114+
}
115+
}
116+
117+

0 commit comments

Comments
 (0)