A.
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <queue>
using namespace std;
const int N = 3e5+10,mod=1e9+7;
#define ll long long
typedef pair<int, int> PII;
int n,m,k;
int a[N];
bool st[N];
void solve(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+1+n);
int l=1,r=n;
int res=0;
while(l<r){
res+=a[r]-a[l];
r--;l++;
}
cout<<res<<"\n";
}
signed main(){
cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
int t=1;
cin>>t;
while(t--) solve();
}
B.
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <queue>
using namespace std;
const int N = 2e5+10,mod=1e9+7;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
int n,m,k;
vector<int> g[N];
int a[N];
void solve(){
cin>>n;
int s=0,cnt=0;
int now=0;
for(int i=1;i<=n;i++){
int x;cin>>x;
s+=abs(x);
if(x>0&&now)
{
cnt++;now=0;
}
else if(x<0&&!now){
now=1;
}
}
if(now) cnt++;
cout<<s<<" "<<cnt<<"\n";
}
signed main(){
cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
int t=1;
cin>>t;
while(t--) solve();
}
C.
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <queue>
using namespace std;
const int N = 2e5+10,mod=1e9+7;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
int n,m,k;
vector<int> g[N];
int a[N];
void solve(){
cin>>n;
int res=0;
while(n){
res+=n;
n/=2;
}
cout<<res<<"\n";
}
signed main(){
cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
int t=1;
cin>>t;
while(t--) solve();
}
D.
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <queue>
using namespace std;
const int N = 2e5+10,mod=1e9+7;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
int n,m,k;
vector<int> g[N];
void solve(){
cin>>n;
vector<int> sz(n+1,0);
for(int i=1;i<=n;i++) g[i].clear();
for(int i=1;i<n;i++){
int a,b;
cin>>a>>b;
g[a].push_back(b);
g[b].push_back(a);
}
function<void(int,int)> dfs=[&](int u,int fa)
{
bool flag=true;
for(auto&j:g[u])
{
if(j==fa) continue;
flag=false;
dfs(j,u);
sz[u]+=sz[j];
}
sz[u]+=flag;
};
dfs(1,-1);
cin>>m;
while (m -- ){
int x,y;cin>>x>>y;
cout<<sz[x]*sz[y]<<"\n";
}
}
signed main(){
cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
int t=1;
cin>>t;
while(t--) solve();
}
E.
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <queue>
using namespace std;
const int N = 1e5+10,mod=1e9+7;
#define ll long long
typedef long long LL;
typedef pair<int, int> PII;
int n,m,k;
int l[N],r[N];
int a[N],q[N],s[N];
bool check(int x){
for(int i=1;i<=n;i++)
{
a[i]=0,s[i]=0;
}
for(int i=1;i<=x;i++){
a[q[i]]=1;
}
for(int i=1;i<=n;i++){
s[i]=s[i-1]+a[i];
}
for(int i=1;i<=k;i++){
int left=l[i],right=r[i];
int cha=right-left+1;
if((right-left+1)%2==0){
if(s[right]-s[left-1]>cha/2) return true;
}
else
{
if(s[right]-s[left-1]>cha/2) return true;
}
}
return false;
}
void solve(){
cin>>n>>k;
for(int i=1;i<=k;i++){
cin>>l[i]>>r[i];
}
cin>>m;
for(int i=1;i<=m;i++) cin>>q[i];
int l=1,r=m;
while(l<r){
int mid=l+r>>1;
if(check(mid)) r=mid;
else l=mid+1;
}
if(!check(l)){
cout<<-1<<"\n";
}
else cout<<l<<"\n";
}
signed main(){
cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
int t=1;
cin>>t;
while(t--) solve();
}
F1
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <queue>
using namespace std;
const int N = 4e5+10,mod=1e9+7;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
int n,m,k;
vector<int> g[N];
int w[N];
void solve(){
cin>>n;
vector<int> mx(n+10,0),mn(n+10,0);
vector<int> f1(n+10,0),f2(n+10,0);
for(int i=1;i<=n;i++) w[i]=0;
int now=1;
w[now]=1;
f1[now]=1;
f2[now]=0;
mx[now]=max({mx[now],1ll,f1[now]});
mn[now]=min({mn[now],1ll,f2[now]});
for(int i=1;i<=n;i++)
{
char op;
int x,y,z;
cin>>op;
if(op=='+')
{
cin>>x>>y;
now++;
w[now]=y;
f1[now]=max(f1[x]+y,y);
f2[now]=min(f2[x]+y,y);
mx[now]=max({mx[x],mx[now],y,f1[now]});
mn[now]=min({mn[x],mn[now],y,f2[now]});
}
else{
cin>>x>>y>>z;
if(x>y) swap(x,y);
if(mx[y]>=z&&z>=mn[y])
{
cout<<"YES\n";
}
else cout<<"NO\n";
}
}
}
signed main(){
cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
int t=1;
cin>>t;
while(t--) solve();
}
F2
#include<bits/stdc++.h>
using namespace std;
using i64 = int64_t;
const int h = 17;
struct T
{
int sum;
int mx, mxl, mxr;
int mn, mnl, mnr;
static T init(int x)
{
int sum = x;
int mx = max(x, 0);
int mn = min(x, 0);
return {sum, mx, mx, mx, mn, mn, mn};
}
T rev() const {return {sum, mx, mxr, mxl, mn, mnr, mnl}; }
T operator +(const T &o) const {
return {sum + o.sum,
max({mx, o.mx, mxr + o.mxl}),
max(mxl, sum + o.mxl),
max(o.mxr, mxr + o.sum),
min({mn, o.mn, mnr + o.mnl}),
min(mnl, sum + o.mnl),
min(o.mnr, mnr + o.sum)
};
}
};
void solve()
{
int n, m = 1;
cin >> n;
vector<array<int, h>> p(n + 2);
vector<array<T, h>> t(n + 2);
vector<int> dep(n + 2);
p[1].fill(0);
t[1][0] = T::init(1);
for(int i = 0; i < n; i ++ )
{
char op;
cin >> op;
if(op == '+')
{
int u, x;
cin >> u >> x;
m += 1;
dep[m] = dep[u] + 1;
p[m][0] = u;
t[m][0] = T::init(x);
for(int j = 1; j < h; j ++ )
{
p[m][j] = p[p[m][j - 1]][j - 1];
t[m][j] = t[m][j - 1] + t[p[m][j - 1]][j - 1];
}
} else {
int u, v, k;
cin >> u >> v >> k;
T l = T::init(0), r = T::init(0), res;
if(dep[u] < dep[v]) {
swap(u, v);
}
for(int j = h - 1; j >= 0; j -- )
{
if(dep[u]-(1<<j) >= dep[v]) {
l = l + t[u][j];
u = p[u][j];
}
}
if(u == v) {
res = l + t[u][0];
} else {
for(int j = h - 1; j >= 0; j -- )
{
if(p[u][j] != p[v][j]) {
l = l + t[u][j];
r = r + t[v][j];
u = p[u][j];
v = p[v][j];
}
}
res = l + t[u][1] + t[u][0]+r.rev();
}
cout << (res.mx >= k && res.mn <= k ? "YES\n" : "NO\n");
}
}
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t = 1;
cin >> t;
for(int i = 1; i <= t; i ++ )
{
solve();
}
}