A. Lucky?
#include <bits/stdc++.h>
using namespace std;
int _;
void solve()
{
string s;
cin>>s;
int a=0,b=0;
for(int i=0;i<3;i++)a=a+s[i]-'0';
for(int i=3;i<s.size();i++)b=b+s[i]-'0';
if(a==b)puts("YES");
else puts("NO");
}
int main()
{
cin>>_;
while(_--)solve();
return 0;
}
B. Equal Candies
#include <bits/stdc++.h>
using namespace std;
int n;
int _;
void solve()
{
cin>>n;
int minv=0x3f3f3f3f;
vector<int>v;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
v.push_back(x);
minv=min(minv,x);
}
long long res=0;
for(int i=0;i<n;i++)
{
res+=v[i]-minv;
}
cout<<res<<endl;
}
int main()
{
cin>>_;
while(_--)solve();
return 0;
}
C. Most Similar Words
#include <bits/stdc++.h>
using namespace std;
#define int long long
int _;
int n,m;
void solve()
{
cin>>n>>m;
string s;
vector<string>v;
for(int i=0;i<n;i++)
{
cin>>s;
v.push_back(s);
}
int res=2e9;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
int s=0;
for(int k=0;k<m;k++)
{
s+=abs(v[i][k]-v[j][k]);
}
res=min(res,s);
}
}
cout<<res<<endl;
}
signed main()
{
cin>>_;
while(_--)solve();
return 0;
}
D. X-Sum
#include <bits/stdc++.h>
using namespace std;
#define int long long
int _;
int n,m;
const int N=210;
int g[N][N];
void solve()
{
cin>>n>>m;
int res=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>g[i][j];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
int s=g[i][j];
int a=i-1,b=j-1;
while(a>=1&&b>=1)s+=g[a][b],a--,b--;
a=i+1,b=j+1;
while(a<=n&&b<=m)s+=g[a][b],a++,b++;
a=i+1,b=j-1;
while(a<=n&&b>=1)s+=g[a][b],a++,b--;
a=i-1,b=j+1;
while(a>=1&&b<=m)s+=g[a][b],a--,b++;
res=max(res,s);
}
}
cout<<res<<endl;
}
signed main()
{
cin>>_;
while(_--)solve();
return 0;
}
E. Eating Queries
#include <bits/stdc++.h>
#define int long long
using namespace std;
int _;
int n,q;
const int N=5e5+10;
int a[N];
int s[N];
void solve()
{
cin>>n>>q;
for(int i=1;i<=n;i++)cin>>a[i];
sort(a+1,a+1+n,greater<int>());
for(int i=1;i<=n;i++)s[i]=s[i-1]+a[i];
while(q--)
{
int x;
cin>>x;
int l=1,r=n;
if(s[r]<x)
{
cout<<-1<<endl;
continue;
}
while(l<r)
{
int mid=l+r>>1;
if(s[mid]>=x)r=mid;
else l=mid+1;
}
cout<<l<<endl;
}
}
signed main()
{
cin>>_;
while(_--)solve();
return 0;
}
F. Longest Strike
#include <bits/stdc++.h>
using namespace std;
#define int long long
int _;
void solve()
{
int n,k;
cin>>n>>k;
map<int,int>mp;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
mp[x]++;
}
vector<int>v;
for(auto x:mp)
{
if(x.second>=k)
{
v.push_back(x.first);
}
}
v.push_back(-1);
int len=-1;
int a=0,b=0;
for(int i=0,j=0;i<v.size();i++)
{
if(v[i]+1!=v[i+1])
{
if(len<i-j+1)
{
len=i-j+1;
a=v[j],b=v[i];
}
j=i+1;
}
}
if(a!=-1)
cout<<a<<' '<<b<<endl;
else cout<<-1<<endl;
}
signed main()
{
cin>>_;
while(_--)solve();
return 0;
}
G. White-Black Balanced Subtrees
#include <bits/stdc++.h>
using namespace std;
const int N=4010,M=2*N;
int h[N],e[M],ne[M],w[N],idx;
int _;
int n;
int res;
void add(int a,int b,int c)
{
e[idx]=b,ne[idx]=h[a],w[b]=c,h[a]=idx++;
}
int dfs(int u)
{
int s=0;
for(int i=h[u];~i;i=ne[i])
{
int j=e[i];
s+=dfs(j);
}
s+=w[u];
if(s==0)res++;
return s;
}
void solve()
{
memset(h,-1,sizeof h);
idx=1;
cin>>n;
vector<int>v(n+10);
for(int i=2;i<=n;i++)cin>>v[i];
string s;
cin>>s;
for(int i=0;i<s.size();i++)
{
int f=1;
if(s[i]=='W')f=1;
else f=-1;
if(i==0)w[1]=f;
else add(v[i+1],i+1,f);
}
res=0;
dfs(1);
cout<<res<<endl;
}
int main()
{
cin>>_;
while(_--)solve();
return 0;
}
H1. Maximum Crossings (Easy Version)
#include <bits/stdc++.h>
using namespace std;
int _;
int n;
void solve()
{
cin>>n;
vector<int>v;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
v.push_back(x);
}
int res=0;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(v[i]>=v[j])res++;
}
}
cout<<res<<endl;
}
int main()
{
cin>>_;
while(_--)solve();
return 0;
}