C - Dominant Piranha
#include<bits/stdc++.h>
const int maxn = 300005;
int T ,k ,n;
int a[maxn];
bool flg;
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);flg=1;k=1;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
if(a[i]!=a[1])flg=0;
if(a[i]>a[k])k=i;
}
if(k==1)while(a[k]==a[k+1])k++;
if(flg) printf("-1\n");
else printf("%d\n",k);
}
}
D - Districts Connection
#include <cstdio>
int a[5005];
int main(){
int T;scanf("%d",&T);
while(T--){
int n;scanf("%d",&n);
int j=0;
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
if(a[i]!=a[1])j=i;
}
if(j==0){
printf("NO\n");
continue;
}
printf("YES\n");
for(int i=2;i<=n;i++)if(a[i]!=a[1])printf("%d %d\n",1,i);
else printf("%d %d\n",j,i);
}
return 0;
}
E - Two Round Dances
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
long long int f=1;
for(int i=1;i<=n;i++)
f=f*i;
cout<<f*2/(n*n);
}
F. Zero Remainder Sum
dp
#include <bits/stdc++.h>
#define fi first
#define se second
#define mp make_pair
using namespace std;
const int oo = 1e9;
int a[75][75];
int dp[75][75][75][75];
int n,m,k;
int solve(int i, int j, int num, int sum)
{
int &res = dp[i][j][num][sum];
if(i > n) return sum ? -oo : 0;
if(res != -1) return res;
if(j > m) solve(i + 1, 1, 0, sum);
res = solve(i, j + 1, num, sum);
if(num < m / 2) res = max(res, solve(i, j, num + 1, (sum + a[i][j]) % k) + a[i][j]);
return res;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m >> k;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
{
cin >> a[i][j];
}
memset(dp, -1, sizeof(dp));
cout << solve(1, 1, 0, 0);
return 0;
}