CF VP Day2 Codeforces Round #717 (Div. 2) A B C
A. Tit for Tat
#include<bits/stdc++.h>
using namespace std;
const int N = 110;
int a[N];
void solve(){
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++){
while(a[i]>0&&k>0){
a[i]-=1;
a[n]+=1;
k--;
}
}
for(int i=1;i<=n;i++)cout<<a[i]<<' ';
cout<<endl;
}
int main(){
int t;
cin>>t;
while(t--){
solve();
}
return 0;
}
B. AGAGA XOOORRR
#include<bits/stdc++.h>
using namespace std;
const int N = 2010;
int a[N];
int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
int res=0;
for(int i=1;i<=n;i++)cin>>a[i],res^=a[i];
if(res==0){
cout<<"YES"<<endl;
continue;
}
else{
int ans=0;
int sum=0;
for(int i=1;i<=n;i++){
ans^=a[i];
if(ans==res){
sum++;
ans=0;
}
}
if(sum>=3)cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}
return 0;
}
C. Baby Ehab Partitions Again
#include<bits/stdc++.h>
using namespace std;
const int N = 110;
int a[N];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
while(1){
bool ok = true;
for(int i=1;i<=n;i++){
if(a[i]%2)ok = false;
}
if(!ok)break;
for(int i=1;i<=n;i++)a[i]/=2;
}
int ans=0;
for(int i=1;i<=n;i++)ans+=a[i];
if(ans%2){
cout<<0<<endl;
return 0;
}
bitset<200010>dp;
dp[0]=1;
for(int i=1;i<=n;i++){
dp|=dp<<(a[i]);
}
if(!dp[ans/2]){
cout<<0<<endl;
}
else{
int id;
for(int i=1;i<=n;i++){
if(a[i]%2){
id=i;
break;
}
}
cout<<1<<endl;
cout<<id<<endl;
}
return 0;
}