//RC-u1 亚运奖牌榜
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#include<bits/stdc++.h>
#define int long long
#define fi first
#define se second
#define endl '\n'
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
int cnt[2][4];
int a1,a2,b1,b2,c1,c2;
const int INF=0x3f3f3f3f;
void solve()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
int x,y;
cin>>x>>y;
cnt[x][y]++;
if(x==0)
{
if(y==1)
{
a1++;
}
else if(y==2)
{
b1++;
}
else c1++;
}
else
{
if(y==1)
{
a2++;
}
else if(y==2)
{
b2++;
}
else c2++;
}
}
array<int,3>A={a1,b1,c1},B={a2,b2,c2};
bool flag=(A>B);
// if(a1<a2)flag=1;
// else if(b1<b2)flag=1;
// else if(c1<c2)flag=1;
cout<<cnt[0][1]<<" "<<cnt[0][2]<<" "<<cnt[0][3]<<endl;
cout<<cnt[1][1]<<" "<<cnt[1][2]<<" "<<cnt[1][3]<<endl;
if(flag)cout<<"The first win!"<<endl;
else cout<<"The second win!"<<endl;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int t=1;
//cin>>t;
while(t--)
{
solve();
}
return 0;
}
//RC-u2 出院
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#include<bits/stdc++.h>
#define int long long
#define fi first
#define se second
#define endl '\n'
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
const int INF=0x3f3f3f3f;
void solve()
{
int n,m;
cin>>n>>m;
unordered_map<string,char>mp;
for(int i=1;i<=n;i++)
{
string s;
char ch;
cin>>s>>ch;
mp[s]=ch;
}
while(m--)
{
string s;
cin>>s;
if(mp.count(s))
{
cout<<mp[s]<<endl;
}
else
{
int sum=0;
string a="",b="";
for(int i=0;i<s.size();i++)
{
string aa=s.substr(0,i);
string bb=s.substr(i,s.size()-i+1);
//cout<<a<<" "<<b<<endl;
if(mp.count(aa)&&mp.count(bb))
{
sum++;
a=aa;
b=bb;
}
}
if(sum>1||sum<=0)cout<<'D'<<endl;
else cout<<mp[a]<<mp[b]<<endl;
}
}
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int t=1;
while(t--)
{
solve();
}
return 0;
}
//RC-u3 骰子游戏
#include<bits/stdc++.h>
using namespace std;
// 全局变量声明
int n,k[6],level1,level2,t[6],f[32],r[32];
// 函数get_level:根据五个骰子的点数,返回当前获胜等级
int get_level(int s[])
{
// 首先对骰子点数进行排序,以便于后续判断
sort(s+1,s+1+5);
// 下面的条件判断对应于题目中给出的获胜等级判断逻辑
// 注意数组是从1开始索引的,符合题目输入习惯
if(s[1]==s[2]&&s[2]==s[3]&&s[3]==s[4]&&s[4]==s[5])
return 9; // 五个同点数
if(s[1]==s[2]&&s[2]==s[3]&&s[3]==s[4]||s[2]==s[3]&&s[3]==s[4]&&s[4]==s[5])
return 8; // 四个同点数
if(s[1]==s[2]&&s[2]!=s[3]&&s[3]==s[4]&&s[4]==s[5]||s[1]==s[2]&&s[2]==s[3]&&s[3]!=s[4]&&s[4]==s[5])
return 7; // 葫芦
if(s[1]==2&&s[2]==3&&s[3]==4&&s[4]==5&&s[5]==6)
return 6; // 六高顺子
if(s[1]==1&&s[2]==2&&s[3]==3&&s[4]==4&&s[5]==5)
return 5; // 五高顺子
if(s[1]==s[2]&&s[2]==s[3]||s[2]&&s[2]==s[3]&&s[3]==s[4]||s[3]==s[4]&&s[4]==s[5])
return 4; // 三个同点数
if(s[1]==s[2]&&s[3]==s[4]||s[1]==s[2]&&s[4]==s[5]||s[2]==s[3]&&s[4]==s[5])
return 3; // 两对
for(int i=2;i<=5;i++)
if(s[i]==s[i-1])
return 2; // 一对
return 1; // 无
}
// 函数get_1:计算一个整数的二进制表示中1的个数
int get_1(int a)
{
int sum=0;
while(a)
{
if(a%2==1) sum++;
a/=2;
}
return sum;
}
// 主函数
int main()
{
// 读入测试数据组数
cin>>n;
while(n--)
{
// 读入每组数据,即五个骰子的点数
for(int i=1;i<=5;i++)
cin>>k[i];
// 获取初始获胜等级
level1=get_level(k);
// 初始化数组f和r
memset(f,0,sizeof f);
memset(r,0,sizeof r);
// 初始化结果变量
int res=0;
int zi=0;
int mu=1;
double gv=-1;
// 遍历所有可能的骰子点数组合
for(int a=1;a<=6;a++)
for(int b=1;b<=6;b++)
for(int c=1;c<=6;c++)
for(int d=1;d<=6;d++)
for(int e=1;e<=6;e++)
{
// 计算每种点数组合
t[1]=a,t[2]=b,t[3]=c,t[4]=d,t[5]=e;
int cnt=0;
// 标记与原点数不同的骰子位置
for(int i=1;i<=5;i++)
if(k[i]!=t[i])
cnt|=1<<(i-1);
// 计算所有包含该点数变化的组合,并更新频次和成功次数
for(int i=1;i<=31;i++)
if((i&cnt)==cnt)
{
f[i]++;
level2=get_level(t);
if(level2>level1)
r[i]++;
}
}
// 寻找使得获胜等级提高的最佳操作方案
for(int i=1;i<=31;i++)
{
if(r[i]==0) continue;
double g=(double)r[i]/f[i];
int c=get_1(i);
// 如果发现更好的操作方案,则更新结果变量
if(g>gv||(g==gv&&c<res))
gv=g,res=c,zi=r[i],mu=f[i];
}
// 简化结果分数
if(zi>0&&mu>0)
{
int z=__gcd(zi,mu);
zi/=z;
mu/=z;
}
// 输出结果
printf("%d %d %d\n",res,zi,mu);
}
return 0;
}
//RC-u4 相对论大师
#include<bits/stdc++.h>
using namespace std;
const int N = 1e3 + 7;
int n;
map<string,vector<string>> g;
map<string,string> pre;
string ans1 = "-1",ans2 = "-1";
map<string,int> d;
int mn = 1e9;
int bfs(string s1,string s2){
pre.clear();
d.clear();
queue<string> q;
q.push(s1);
while(q.size()){
string t = q.front();
q.pop();
if(t == s2) return d[t];
for(auto x : g[t]){
if(d.find(x) != d.end()) continue;
pre[x] = t;
d[x] = d[t] + 1;
q.push(x);
}
}
return -1;
}
void solve(){
cin >> n;
map<string,int> mp;
for(int i = 0;i < n;i ++){
string s1,s2; cin >> s1 >> s2;
string s3,s4; cin >> s3 >> s4;
string a = s1 + " " + s2,b = s3 + " " + s4;
g[a].push_back(b);
mp[s1] = 1,mp[s3] = 1;
}
for(auto x : mp){
string s1 = x.first + " 0";
string s2 = x.first + " 1";
int sb = bfs(s1,s2);
if(sb != -1 && sb < mn){
mn = sb;
ans1 = s1,ans2 = s2;
}
sb = bfs(s2,s1);
if(sb != -1 && sb < mn){
mn = sb;
ans1 = s2,ans2 = s1;
}
}
int dig = bfs(ans1,ans2);
vector<string> v;
string cans2 = ans2;
while(cans2 != ans1){
v.push_back(cans2);
cans2 = pre[cans2];
}
v.push_back(ans1);
reverse(v.begin(),v.end());
for(int i = 0;i < v.size() - 1;i ++){
cout << v[i] << " ";
if(i != v.size() - 1) cout << v[i + 1] << " ";
}
cout << "= " << ans1 << " " << ans2;
}
int main(){
solve();
return 0;
}
//RC-u5 相对成功与相对失败
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#include<bits/stdc++.h>
#define int long long
#define fi first
#define se second
#define endl '\n'
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
const int INF=0x3f3f3f3f,N=1e5+10;
void solve()
{
int n;
cin>>n;
vector<int>a(n+1,-1),b(n+1,-1),cnt(n+1,0),s(n+1);
vector<int>dp(n+1,0);
for(int i=1;i<=n;i++)
{
int x,y;
cin>>x>>y;
a[i]=x,b[i]=y;
if(x==1)cnt[i]++;
if(y==0)cnt[i]++;
}
for(int i=1;i<=n;i++)
{
cin>>s[i];
s[i]=cnt[s[i]];
}
//for(int i=1;i<=n;i++)cout<<s[i]<<" \n"[i==n];
for(int i=1;i<=n;i++)
{
for(int j=s[i];j<=2;j++)//dp[i]表示以数i结尾的最长不上子序列 记忆化搜索
{
dp[s[i]]=max(dp[s[i]],dp[j]+1);
}
}
// for(int i=n;i>=1;i--)
// {
// dp[i]=1;
// for(int j=n;j>i;j--)//dp[i]以第i个数作为子序列左端点的最长不上升子序列 dp O(n^2)
// {
// if(s[j]<=s[i])dp[i]=max(dp[i],dp[j]+1);
// }
// }
int len=0;
for(int i=0;i<=2;i++)
{
//cout<<dp[i]<<" \n"[i==n];
len=max(len,dp[i]);
}
cout<<n-len<<endl;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int t=1;
cin>>t;
while(t--)
{
solve();
}
return 0;
}