#include<bits/stdc++.h>usingnamespace std;constint N =100010;structnode{double x, y;booloperator<(const node &a)const{return x * a.y < a.x * y;}}f[N];signedmain(){int n, m;
cin >> n >> m;for(int i =0; i < n; i++)
cin >> f[i].x;for(int i =0; i < n; i++)
cin >> f[i].y;sort(f, f + n);double res =0;int l =0;while(l < n && m >= f[l].x)
res += f[l].y, m -= f[l++].x;if(l < n) res += m * f[l].y / f[l].x;printf("%.2lf", res);}
#include<bits/stdc++.h>usingnamespace std;constint N =1010;int n;char s[N];bool f[N][N];intmain(){scanf("%[^\n]\n", s +1);int n =strlen(s +1);int res =1;for(int i =1; i <= n; i ++) f[i][i]=true;for(int i =2; i <= n; i ++)for(int l =1; l <= n - i +1; l ++){int r = l + i -1;if(i ==2) f[l][r]=(s[l]== s[r]);else f[l][r]=(s[l]== s[r]&& f[l +1][r -1]);if(f[l][r])
res =max(res, i);}
cout << res;}
#include<bits/stdc++.h>#definePIIpair<int,int>usingnamespace std;constint N =510, M =5010;int n, m;
PII e[M];int p[N];bool st[N];intfind(int x){if(p[x]!= x) p[x]=find(p[x]);return p[x];}intcheck(){for(int i =0; i < n; i ++) p[i]= i;for(int i =0; i < m; i ++){int u = e[i].first, v = e[i].second;if(st[u]|| st[v])continue;int fu =find(u), fv =find(v);if(fu != fv) p[fu]= p[fv];}int res =0;for(int i =0; i < n; i ++)if(!st[i]&& i ==find(i))
res ++;return res;}intmain(){
cin >> n >> m;for(int i =0; i < m; i ++){int u, v;
cin >> u >> v;
e[i]=make_pair(u, v);}int k; cin >> k;int cnt =check();while(k --){int x; cin >> x;
st[x]=true;int t =check();if(t > cnt)printf("Red Alert: City %d is lost!\n", x), cnt = t;else{printf("City %d is lost.\n", x);
cnt = t;}}
cnt =check();if(!cnt)puts("Game Over.");return0;}
#include<bits/stdc++.h>usingnamespace std;
map<string,int> st;
vector<string> ans;
pair<string,int> a[10010];intmain(){int n; cin >> n;for(int i =0; i < n; i ++){
string s; cin >> s;
st[s]=1;}int m; cin >> m;int avg =0;for(int i =0; i < m; i ++){
cin >> a[i].first >> a[i].second;
avg += a[i].second;}
avg =(avg + m -1)/ m;for(int i =0; i < m; i ++)if(a[i].second >= avg &&!st[a[i].first])
ans.push_back(a[i].first);if(ans.size()){sort(ans.begin(), ans.end());for(int i =0; i < ans.size(); i ++)
cout << ans[i]<< endl;}elseputs("Bing Mei You");return0;}
#include<bits/stdc++.h>usingnamespace std;constint N =1e5+10;int n;double z, r, ans;
vector<int> tr[N];int bs[N];voiddfs(int u,double z){if(tr[u].size()==0)
ans += z * bs[u];else{int len = tr[u].size();for(int i =0; i < len; i ++)dfs(tr[u][i], z *(1- r));}}intmain(){
cin >> n >> z >> r;
r /=100;for(int i =0; i < n; i ++){int m;
cin >> m;if(m ==0){int x; cin >> x;
bs[i]= x;continue;}while(m --){int x; cin >> x;
tr[i].push_back(x);}}dfs(0, z);printf("%ld",(longlong)ans);return0;}
#include<bits/stdc++.h>usingnamespace std;constint N =1e5+10;int h, n;
map<int,int> ne, w;intmain(){
cin >> h >> n;for(int i =1, idx; i <= n; i ++)
cin >> idx >> w[idx]>> ne[idx];
vector<int> v;
n =0;for(int i = h;~i; i = ne[i])
v.push_back(i), n ++;
vector<int> res;for(int i = n -1, j =0; i >= j; i --, j ++){
res.push_back(v[i]);if(i != j) res.push_back(v[j]);}for(int i =0; i < n; i ++)if(i != n -1)printf("%05d %d %05d\n", res[i], w[res[i]], res[i +1]);elseprintf("%05d %d -1\n", res[i], w[res[i]]);}
#include<bits/stdc++.h>usingnamespace std;constint N =510;int n, m, k;int e[250010], ne[250010], h[N], idx;int c[N];bool st[N];voidadd(int a,int b){
e[idx]= b, ne[idx]= h[a], h[a]= idx ++;}booldfs(int u){if(st[u])returntrue;
st[u]=true;for(int i = h[u];~i; i = ne[i]){int j = e[i];if(c[u]== c[j]){// printf("%d----%d %d-----%d\n", u, c[u], j, c[j]);returnfalse;}if(!dfs(j))returnfalse;}returntrue;}intmain(){
cin >> n >> m >> k;memset(h,-1,sizeof h);while(m --){int a, b;
cin >> a >> b;add(a, b);add(b, a);}int q; cin >> q;while(q --){for(int i =1; i <= n; i ++) st[i]=false;
set<int> s;for(int i =1; i <= n; i ++){
cin >> c[i];
s.insert(c[i]);}if(s.size()== k){bool f =true;for(int i =1; i <= n; i ++)if(!st[i]){
f =dfs(i);if(!f)break;}if(f)puts("Yes");elseputs("No");}elseputs("No");}return0;}
#include<bits/stdc++.h>usingnamespace std;constint N =1e5+10;int n;
vector<int> ans;
vector<int> tr[N];int root, res =0;voiddfs(int u,int deep){if(tr[u].size()==0){if(deep == res) ans.push_back(u);elseif(deep > res){
res = deep;
ans.clear();
ans.push_back(u);}}else{for(int i =0; i < tr[u].size(); i ++)dfs(tr[u][i], deep +1);}}intmain(){
cin >> n;for(int i =1; i <= n; i ++){int x; cin >> x;if(x ==-1) root = i;else tr[x].push_back(i);}dfs(root,1);sort(ans.begin(), ans.end());
cout << res << endl;for(int i =0; i < ans.size(); i ++)printf("%d%c", ans[i]," \n"[i == ans.size()-1]);return0;}
#include<bits/stdc++.h>usingnamespace std;int n, g, k;int rak[10010];structNode{int x; string s;booloperator<(const Node& q)const{if(this->x == q.x)returnthis->s < q.s;returnthis->x > q.x;}}a[10010];int res;intmain(){
cin >> n >> g >> k;for(int i =0; i < n; i ++){
cin >> a[i].s >> a[i].x;if(a[i].x >= g) res +=50;elseif(a[i].x <= g && a[i].x >=60) res +=20;}sort(a, a + n);
cout << res << endl;for(int i =0, j =1; i < n; i ++){
rak[i]= j;if(a[i].x > a[i +1].x) j =max(j +1, i +2);}for(int i =0; rak[i]<= k && i < n; i ++)
cout << rak[i]<<' '<< a[i].s <<' '<< a[i].x << endl;return0;}
#include<bits/stdc++.h>usingnamespace std;constint N =1010;int n, m;double g[N][N];char sex[N];structNode{double q;int id;booloperator<(const Node& x)const{if(x.q ==this->q)returnthis->id < x.id;returnthis->q > x.q;}};intread(){char c =getchar();int f =1, x =0;while(c <'0'|| c >'9'){if(c =='-') f =-1;
c =getchar();}while(c >='0'&& c <='9'){
x = x *10+ c -'0';
c =getchar();}
x ++;return f * x;}intmain(){
cin >> n >> m;for(int i =0; i < m; i ++){int k; cin >> k;
vector<int> v;for(int j =0; j < k; j ++){int x =read();if(x <0){
sex[-x]='S';
v.push_back(-x);}else{
sex[x]='M';
v.push_back(x);}}for(int j =0; j < k; j ++)for(int z = j +1; z < k; z ++)
g[v[j]][v[z]]+=1.0/ k, g[v[z]][v[j]]+=1.0/ k;}int x =read(), y =read();int a =abs(x), b =abs(y);bool f1, f2;
f1 = f2 =false;
vector<Node> pa, pb;for(int i =1; i <= n; i ++){if(sex[i]!= sex[a])
pa.push_back({g[a][i], i});if(sex[i]!= sex[b])
pb.push_back({g[b][i], i});}sort(pa.begin(), pa.end());sort(pb.begin(), pb.end());int la = pa.size(), lb = pb.size();for(int i =0; i < la; i ++)if(pa[i].q == pa[0].q && pa[i].id == b)
f1 =true;for(int i =0; i < lb; i ++)if(pb[i].q == pb[0].q && pb[i].id == a)
f2 =true;if(f1 && f2){if(x <0) cout <<'-'<<abs(x)-1;else cout << x -1;
cout <<' ';if(y <0) cout <<'-'<<abs(y)-1<< endl;else cout << y -1<< endl;}else{for(int i =0; i < la; i ++)if(pa[i].q == pa[0].q){int id = pa[i].id;if(x <0) cout <<'-'<<abs(x)-1;else cout << x -1;
cout <<' ';if(sex[id]=='S') cout <<'-'<< id -1<< endl;else cout << id -1<< endl;}for(int i =0; i < lb; i ++)if(pb[i].q == pb[0].q){int id = pb[i].id;if(y <0) cout <<'-'<<abs(y)-1;else cout << y -1;
cout <<' ';if(sex[id]=='S') cout <<'-'<< id -1<< endl;else cout << id -1<< endl;}}return0;}
#include<bits/stdc++.h>usingnamespace std;constint N =1e4+10;int l, r;int isapper[N];int ans[N];boolisprime(int x){if(x <2)returnfalse;for(int i =2; i <= x / i; i ++)if(x % i ==0)returnfalse;returntrue;}intmain(){
cin >> l >> r;for(int i = l; i <= r; i ++){int x = i;
vector<int> a;while(x !=1){int t = x, y =0;while(t){int tt = t %10;
y += tt * tt;
t /=10;}if(find(a.begin(), a.end(), y)!= a.end())break;
a.push_back(y);
isapper[y]=1;
x = y;}if(x ==1) ans[i]= a.size();}int cnt =0;for(int i = l; i <= r; i ++)if(!isapper[i]&& ans[i]&&++ cnt){
cout << i <<' '<< ans[i]*(1+isprime(i))<< endl;}if(!cnt)puts("SAD");return0;}
#include<iostream>#include<map>#include<string>usingnamespace std;structPeoson{char sex;
string father;};
map<string, Peoson> people;intjudge(string a, string b){int i =1, j;for(string A = a;!A.empty(); A = people[A].father, i++){
j =1;for(string B = b;!B.empty(); B = people[B].father, j++){if(i >=5&& j >=5)break;if(A == B &&(i <5|| j <5))return0;}}return1;}intmain(){int n, m;
string str, a, b;
cin.sync_with_stdio(false);
cin >> n;for(int i =0; i < n; i++){
cin >> a >> b;if(b.back()=='n')
people[a]={'m',b.substr(0,b.size()-4)};elseif(b.back()=='r')
people[a]={'f',b.substr(0, b.size()-7)};else
people[a].sex = b.back();}
cin >> m;for(int i =0; i < m; i++){
cin >> a >> str >> b >> str;if(people.find(a)== people.end()|| people.find(b)== people.end())printf("NA\n");elseif(people[a].sex == people[b].sex)printf("Whatever\n");elseprintf("%s\n",judge(a, b)?"Yes":"No");}return0;}
#include<bits/stdc++.h>usingnamespace std;constint N =100010;
vector<int> v[N];int n, st[N], t, res;voiddfs(int u,int deep){if(deep > t) res = u, t = deep;for(int i =0; i < v[u].size(); i++)dfs(v[u][i], deep +1);}intmain(){
cin >> n;for(int i =1; i <= n; i++){int k; cin >> k;while(k--){int a; cin >> a;
v[i].push_back(a);
st[a]=1;}}int root =1;while(st[root]) root++;dfs(root,1);
cout << res << endl;return0;}
#include<bits/stdc++.h>usingnamespace std;constint N =100010;intmain(){int n; cin >> n;
stack<int> st0;
stack<char> st1;for(int i =0; i < n; i++){int a; cin >> a;
st0.push(a);}for(int i =0; i < n-1; i++){char a; cin >> a;
st1.push(a);}int a = st0.top();
st0.pop();while(st0.size()){int b = st0.top();
st0.pop();char c = st1.top();
st1.pop();if(c =='+') a = b + a;if(c =='-') a = b - a;if(c =='*') a = b * a;if(c =='/'){if(a ==0){printf("ERROR: %d/0", b);return0;}
a = b / a;}}
cout << a << endl;return0;}
#include<stdio.h>int n, tree[31];voiddfs(int i){if(i > n)return;dfs(2* i);dfs(2* i +1);scanf("%d",&tree[i]);}intmain(){scanf("%d",&n);dfs(1);printf("%d",tree[1]);for(int i =2; i <= n; i++)printf(" %d",tree[i]);return0;}
#include<bits/stdc++.h>#defineintlonglongusingnamespace std;constint N =1010;int d[N][N];int n, m;signedmain(){
cin >> n >> m;while(m--){int a, b, c;
cin >> a >> b >> c;
d[a][b]= d[b][a]= c;}int k; cin >> k;int ma =0x3f3f3f3f, res =0, cnt =0;for(int i =1; i <= k; i++){int a, la =0, sum =0, flag =1;
cin >> a;
map<int,int> mp;for(int j =0; j < a; j++){int b; cin >> b;if(mp[b]) flag =0;
mp[b]=1;if(!d[la][b]) flag =0;
sum += d[la][b];
la = b;}
sum += d[la][0];if(!d[la][0]) flag =0;if(flag && a==n ){
cnt ++;if(ma > sum) ma = sum, res = i;}}
cout << cnt << endl;
cout << res <<" "<< ma << endl;return0;}
#include<bits/stdc++.h>usingnamespace std;constint N =1010;char s[N][N];int l[N], n, m ,S;
stack<char> st;// 筐
vector<char> res;// 流水线voidop0(){if(st.size()){
res.push_back(st.top());
st.pop();}}voidop(int x){if(l[x]>= m)return;
st.push(s[x][l[x]]);
l[x]++;}intmain(){
cin >> n >> m >> S;for(int i =0; i < n; i++)
cin >> s[i];int a;while(cin >> a && a !=-1){if(a ==0)op0();else{if(st.size()== S && l[a-1]<m)op0();op(a -1);}}for(int i =0; i < res.size(); i++)
cout << res[i];return0;}
#include<bits/stdc++.h>usingnamespace std;constint N =100100;
vector<int> v[N];// 每个剧情点可选值int f[N];// 存档intmain(){int n, m;
cin >> n >> m;for(int i =1; i <= n; i++){int k; cin >> k;for(int j =1; j <= k; j++){int a; cin >> a;
v[i].push_back(a);}}// 当前点tint t =1;for(int i =0; i < m; i++){int op, j;
cin >> op >> j;if(op ==1){
f[j]= t;
cout << t << endl;}elseif(op ==0) t = v[t][j-1];else t = f[j];}
cout << t << endl;}
#include<bits/stdc++.h>usingnamespace std;constint N =86400+10;int p[N];intmain(){int n; cin >> n;for(int i =0; i < n; i++){int a, b, c, d, e, f;scanf("%d:%d:%d - %d:%d:%d",&a,&b,&c,&d,&e,&f);int t1 = a *3600+ b *60+ c;int t2 = d *3600+ e *60+ f;
p[t1]++; p[t2]--;}int aa =-1, bb =-1;for(int i =0; i <86400; i++)if(i) p[i]+= p[i-1];for(int i =0; i <86400-1;){int j = i;while(j <86400-1&&!p[j]) j++;if(i != j)printf("%02d:%02d:%02d - %02d:%02d:%02d\n",
i /3600, i %3600/60, i %60,
j /3600, j %3600/60, j %60);
i = j +1;}return0;}
#include<bits/stdc++.h>usingnamespace std;constint N =100010;
string v[N];int cnt0, cnt1, flag, n, m;int tx[4]={0,0,1,-1}, ty[4]={1,-1,0,0};voiddfs(int x,int y){if(v[x][y]!='1') flag =1;
v[x][y]='0';for(int i =0; i <4; i++){int nx = tx[i]+ x, ny = ty[i]+ y;if(nx <0|| ny <0|| nx >= n || ny >= m || v[nx][ny]=='0')continue;dfs(nx, ny);}}intmain(){
cin >> n >> m;for(int i =0; i < n; i++)
cin >> v[i];for(int i =0; i < n; i++)for(int j =0; j < m; j++){
flag =0;if(v[i][j]!='0'){
cnt0++;dfs(i, j);}if(flag) cnt1 ++;}
cout << cnt0 <<" "<< cnt1 << endl;return0;}