B - Memory Management System
#include<bits/stdc++.h>
using namespace std;
struct nomd
{
int x,y,c;
}a[100006],b[100006],c[100006];
int cmp(nomd a,nomd b)
{
return a.x<b.x;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n,m,w;
scanf("%d %d %d",&n,&m,&w);
for(int i=0;i<n;i++)
{
scanf("%d %d",&a[i].x,&a[i].y);
}
sort(a,a+n,cmp);
int x=a[0].y,k=0;
if(a[0].x!=1)
b[++k].x=1,b[k].y=a[0].x-1,b[k].c=b[k].y-b[k].x+1;
for(int i=1;i<n;i++)
{
if(a[i].x-1>=x+1)
{
b[++k].x=x+1;
b[k].y=a[i].x-1;
b[k].c=b[k].y-b[k].x+1;
}
x=max(x,a[i].y);
}
if(x!=m)
b[++k].x=x+1,b[k].y=m,b[k].c=b[k].y-b[k].x+1;
// for(int i=1;i<=k;i++)
// printf("----%d %d %d\n",b[i].x,b[i].y,b[i].c);
int e=0,q=0;
for(int i=k;i>=1;i--)
{
if(b[i].c>q)
{
q=b[i].c;c[++e].x=b[i].x;c[e].y=b[i].y;c[e].c=b[i].c;
}
}
for(int i=0;i<w;i++)
{
int o,ok=0;
scanf("%d",&o);
if(n==0)
{
if(m>=o)
printf("%d %d\n",m-o+1,m);
else
printf("-1 -1\n");
break;
}
for(int j=1;j<=e;j++)
{
if(c[j].c>=o)
{
ok=1;printf("%d %d\n",c[j].y-o+1,c[j].y);break;
}
}
if(ok==0)
printf("-1 -1\n");
}
}
return 0;
}
C - Large GCD
#include<bits/stdc++.h>
using namespace std;
#define clr(a) memset(a, 0, sizeof(a))
#define line cout<<"------------"<<endl
typedef long long ll;
const int maxn = 2e5 + 10;
const int MAXN = 1e6 + 10;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
const int N = 1010;
int main(){
int t, a, b;
scanf("%d", &t);
while(t--){
scanf("%d%d", &a, &b);
if(a%2 == 0 || b % 2==0) printf("2\n");
else printf("12\n");
}
return 0;
}
D - XOR Permutations
E - Building Strings
#include<bits/stdc++.h>
using namespace std;
char s[3000+10];
char c[3000+10];
int val[100];
char ss[100];
int main(){
int _;
scanf("%d",&_);
while(_--){
for(int i=0;i<100;i++)
val[i]=1000;
int a,b;
scanf("%d%d",&a,&b);
scanf("%s",s);
scanf("%s",c);
for(int i=0;i<a;i++){
val[s[i]-'a']=min(c[i]-'0',val[s[i]-'a']);
}
scanf("%s",ss);
int sum=0;
for(int i=0;i<b;i++){
sum+=val[ss[i]-'a'];
}
if(sum>=1000){
printf("-1\n");
}else
printf("%d\n",sum);
}
return 0;
}
F - camelCase;
#include<bits/stdc++.h>
using namespace std;
char a[2000];
int main()
{
int t;
cin>>t;
while(t--)
{
scanf("%s",a);
int len=strlen(a);
int ans=0;
for(int i=0;i<len;i++)
{
if(a[i]>='A'&&a[i]<='Z')
ans++;
}
if(a[0]>='a'&&a[0]<='z')
ans++;
if(ans<=7) printf("YES\n");
else printf("NO\n");
}
return 0;
}
G - The Special King
#include<bits/stdc++.h>
using namespace std;
#define clr(a) memset(a, 0, sizeof(a))
#define line cout<<"------------"<<endl
const int maxn = 2e5 + 10;
const int MAXN = 1e6 + 10;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
const int N = 1010;
int main(){
int t;
scanf("%d", &t);
while(t--){
int a, b, x, y;
scanf("%d%d%d%d", &a, &b, &x, &y);
int ans = abs(a-x) + abs(b-y);
printf("%d\n", ans);
}
return 0;
}
H - The Universal String
#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 10;
const int MAXN = 1e6 + 10;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
const int N = 1010;
int n;
char s[N];
int main(){
scanf("%d", &n);
getchar();
while(n--){
gets(s);
int len = strlen(s);
bool flag = true;
char pre = s[0];
for(int i = 1; i < len; i++){
if(pre == 'z'){
if(s[i] == 'a'){
pre = 'a';continue;
}
else {
flag = false; break;
}
}
else{
if(s[i]-'a'-1 == pre-'a'){
pre = s[i];continue;
}
else {
flag = false; break;
}
}
}
if(flag) printf("YES\n");
else printf("NO\n");
}
return 0;
}
I - Array Negations
#include<bits/stdc++.h>
using namespace std;
#define clr(a) memset(a, 0, sizeof(a))
#define line cout<<"------------"<<endl
typedef long long ll;
const int maxn = 2e5 + 10;
const int MAXN = 1e6 + 10;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
const int N = 10010;
int main(){
int t;
cin >> t;
while(t--){
int n, k, sum = 0;;
int a[N];
scanf("%d%d", &n, &k);
int n0 = 0, nn = 0, n2 = 0;
for(int i = 0; i < n; i++) {
scanf("%d", &a[i]);
if(a[i] == 0) n0 ++;
else if(a[i] < 0) nn++;
else n2++;
}
sort(a, a+n);
int i = 0;
while(k && nn){
a[i] = -a[i];
i++; k--; nn--;
}
if(n0 > 0){
for(int i = 0; i < n; i++) sum += a[i];
}
else{
sort(a, a+n);
if(k & 1) {
a[0] = -a[0];
for(int i = 0; i < n; i++) sum += a[i];
}
else for(int i = 0; i < n; i++) sum += a[i];
}
printf("%d\n", sum);
}
return 0;
}
J - Grid Beauty
#include<bits/stdc++.h>
using namespace std;
#define clr(a) memset(a, 0, sizeof(a))
#define line cout<<"------------"<<endl
typedef long long ll;
const int maxn = 2e5 + 10;
const int MAXN = 1e6 + 10;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
const int N = 1010;
int n, m;
int a[N][N];
int main(){
int T;
scanf("%d", &T);
while(T--){
unordered_map<int, int>mp1;
unordered_map<int, int>mp2;
scanf("%d%d", &n, &m);
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
scanf("%d", &a[i][j]);
}
}
int ans = 0;
for(int i = 0; i < n-1; i++){
for(int j = 0; j < m; j++){
mp1[a[i][j]] ++;
mp2[a[i+1][j]]++;
}
for(int j = 0; j < m; j++){
if(mp1[a[i+1][j]] > 0){
ans += min(mp1[a[i+1][j]], mp2[a[i+1][j]]);
mp2[a[i+1][j]] = 0;
}
}
for(int j = 0; j < m; j++){
mp1[a[i][j]] = 0;
mp2[a[i+1][j]] = 0;
}
}
printf("%d\n", ans);
}
return 0;
}
K - Subarrays OR
#include<bits/stdc++.h>
using namespace std;
#define clr(a) memset(a, 0, sizeof(a))
#define line cout<<"------------"<<endl
typedef long long ll;
const int maxn = 2e5 + 10;
const int MAXN = 1e6 + 10;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
const int N = 1010;
int n, m;
int p[maxn];
int main(){
int T;
scanf("%d", &T);
while(T--){
scanf("%d", &n);
for(int i = 0; i < n; i++){
scanf("%d", &p[i]);
}
set<int>a, b, c;
for(int j = 0; j < n; j++){
a.clear();
a.insert(p[j]);
for(auto i : b){
a.insert(i | p[j]);
}
b = a;
for(auto i : a) c.insert(i);
}
printf("%d\n", c.size());
}
return 0;
}