A. Working Week:
#include<cstdio>
#include<cstring>
#include<stdlib.h>
#include<algorithm>
#include<iostream>
#include<vector>
#include<set>
#include<string>
#include<map>
#include<queue>
#include<stack>
#include<math.h>
#define ll long long
using namespace std;
const int mod=1e9+7;
const int INF=0x3f3f3f3f;
inline int read()
{
int x=0,f=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0',c=getchar();}
return x*f;
}
void solve()
{
int n=read();
printf("%d\n",(n-6)/3);
}
int main()
{
int T=read();
while(T--)solve();
return 0;
}
B. Tea with Tangerines:
#include<cstdio>
#include<cstring>
#include<stdlib.h>
#include<algorithm>
#include<iostream>
#include<vector>
#include<set>
#include<string>
#include<map>
#include<queue>
#include<stack>
#include<math.h>
#define ll long long
using namespace std;
const int mod=1e9+7;
const int INF=0x3f3f3f3f;
inline ll read()
{
ll x=0,f=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0',c=getchar();}
return x*f;
}
const int N=110;
ll a[N];
void solve()
{
ll n=read();
ll mn=1e9;
for(int i=1;i<=n;i++)a[i]=read(),mn=min(mn,a[i]);
ll ans=0;
mn=mn*2-1;
for(int i=1;i<=n;i++)
{
if(a[i]<mn)continue;
else
{
if(a[i]%mn==0)ans+=a[i]/mn-1;
else ans+=a[i]/mn;
}
}
printf("%lld\n",ans);
}
int main()
{
int T=read();
while(T--)solve();
return 0;
}
C. Phase Shift:
#include<cstdio>
#include<cstring>
#include<stdlib.h>
#include<algorithm>
#include<iostream>
#include<vector>
#include<set>
#include<string>
#include<map>
#include<queue>
#include<stack>
#include<math.h>
#define ll long long
using namespace std;
const int mod=1e9+7;
const int INF=0x3f3f3f3f;
inline int read()
{
int x=0,f=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0',c=getchar();}
return x*f;
}
const int N=1e5+10;
char a[N];
int l[30],r[30];
void solve()
{
memset(l,0,sizeof(l)),memset(r,0,sizeof(r));
int n=read();cin>>a+1;
int cnt=26;
for(int i=1;i<=n;i++)
{
int id=a[i]-'a'+1;
if(r[id])continue;
for(int j=1;j<=26;j++)
{
bool flag=0;
int x=id,y=j;
while(y&&x!=y)y=r[y];
if(x==y)flag=1;
if(flag&&cnt>=2)continue;
if(l[j]==0)
{
l[j]=id,r[id]=j;
cnt--;
break;
}
}
}
for(int i=1;i<=n;i++)cout<<(char)(r[a[i]-'a'+1]+'a'-1);
cout<<"\n";
}
int main()
{
int T=read();
while(T--)solve();
return 0;
}
D. Meta-set:
#include<cstdio>
#include<cstring>
#include<stdlib.h>
#include<algorithm>
#include<iostream>
#include<vector>
#include<set>
#include<string>
#include<map>
#include<queue>
#include<stack>
#include<math.h>
#define ll long long
using namespace std;
const int mod=1e9+7;
const int INF=0x3f3f3f3f;
inline int read()
{
int x=0,f=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0',c=getchar();}
return x*f;
}
const int N=1e3+10,M=3e5+10;
string a[N];
struct qwq{
int x,y,z;
};
qwq b[M];
int n,k;
string work(string x,string y)
{
string z="?";
for(int i=1;i<=k;i++)
{
int xx=x[i]-'0',yy=y[i]-'0';
int zz=3-xx-yy;
if(x[i]!=y[i])z+=zz+'0';
else z+=x[i];
}
return z;
}
void solve()
{
int id=0;
map<string,int>mp;
map<int,int>s;
n=read(),k=read();
for(int i=1;i<=n;i++)
{
string x="?";
for(int j=1;j<=k;j++)x+=read()+'0';
a[i]=x;
mp[x]=i;
}
int ans=0;
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
string x=a[i],y=a[j],z;
if(x==y)continue;
z=work(x,y);
//cout<<z<<endl;
if(mp[z]<=j||z==x||z==y)continue;
s[i]++,s[j]++,s[mp[z]]++;
b[++id]=(qwq){i,j,mp[z]};
}
}
for(int i=1;i<=id;i++)
{
ans+=s[b[i].x]-1;
ans+=s[b[i].y]-1;
ans+=s[b[i].z]-1;
}
cout<<ans/2<<endl;
}
int main()
{
int T=1;
while(T--)solve();
return 0;
}
E. House Planning:
#include<cstdio>
#include<cstring>
#include<stdlib.h>
#include<algorithm>
#include<iostream>
#include<vector>
#include<set>
#include<string>
#include<map>
#include<queue>
#include<stack>
#include<math.h>
#define ll long long
using namespace std;
const int mod=1e9+7;
const int INF=0x3f3f3f3f;
inline int read()
{
int x=0,f=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0',c=getchar();}
return x*f;
}
const int N=1e3+10;
int d1[N],d2[N];
int n;
vector<int>v;
bool check(int x)
{
multiset<int>se1,se2;
vector<int>().swap(v);
for(int i=1;i<=n;i++)
{
se1.insert(d1[i]);
se2.insert(d2[i]);
}
for (auto it=se1.rbegin();it!=se1.rend();it++)
{
if(se2.find(*it+x)!=se2.end())
{
se2.erase(se2.find(*it+x));
v.push_back(-*it);
}
else if(se2.find(*it-x)!=se2.end())
{
se2.erase(se2.find(*it-x));
v.push_back(*it);
}
else if(se2.find(x-*it)!=se2.end())
{
se2.erase(se2.find(x-*it));
v.push_back(*it);
}
else return false;
}
return true;
}
void solve()
{
n=read();
for(int i=1;i<=n;i++)d1[i]=read();
for(int i=1;i<=n;i++)d2[i]=read();
bool ans=0;
int diff=-1;
for(int i=1;i<=n;i++)
{
if(check(abs(d1[1]-d2[i])))
{
ans=1;
diff=abs(d1[1]-d2[i]);
break;
}
if(check(d1[1]+d2[i]))
{
ans=1;
diff=d1[1]+d2[i];
break;
}
}
if(!ans)
{
printf("NO\n");
return;
}
printf("YES\n");
int mn=0;
sort(v.begin(),v.end());
mn=min(mn,v[0]);
for(int i=0;i<v.size();i++)printf("%d ",v[i]-mn);
printf("\n");
printf("%d %d\n",-mn,-mn+diff);
}
int main()
{
int T=read();
while(T--)solve();
return 0;
}