A. Split it!
#include <bits/stdc++.h>
using namespace std;
string str;
int main ( )
{
int t;
cin>> t;
while ( t-- )
{
int n, k;
cin>> n>> k;
cin>> str;
int num= 0 ;
for ( int i= 0 ; i< n; i++ )
{
if ( str[ i] == str[ n- 1 - i] )
num++ ;
else
break ;
}
if ( num>= k&& k* 2 + 1 <= n)
cout<< "YES" << endl;
else
cout<< "NO" << endl;
}
}
B. Max and Mex
#include <bits/stdc++.h>
using namespace std;
int main ( )
{
int t;
cin>> t;
while ( t-- )
{
int n, k;
cin>> n>> k;
map< int , int > p;
int ma= - 1 ;
for ( int i= 0 ; i< n; i++ )
{
int x;
cin>> x;
ma= max ( x, ma) ;
p[ x] ++ ;
}
if ( k== 0 )
{
cout<< p. size ( ) << endl;
continue ;
}
if ( p. find ( 0 ) == p. end ( ) )
{
int r= ma/ 2 ;
if ( ma% 2 == 1 ) r++ ;
if ( p. find ( r) != p. end ( ) )
cout<< p. size ( ) << endl;
else
cout<< p. size ( ) + 1 << endl;
}
else
{
int i;
for ( i= 0 ; i< p. size ( ) ; i++ )
{
if ( p. find ( i) == p. end ( ) )
break ;
}
if ( i>= p. size ( ) )
cout<< p. size ( ) + k<< endl;
else
{
int r= ( i+ ma) / 2 ;
if ( ( i+ ma) % 2 == 1 ) r++ ;
if ( p. find ( r) != p. end ( ) )
cout<< p. size ( ) << endl;
else
cout<< p. size ( ) + 1 << endl;
}
}
}
}
C. Diamond Miner
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main ( )
{
int t;
cin>> t;
while ( t-- )
{
vector< ll > a;
vector< ll > b;
int n;
scanf ( "%d" , & n) ;
double ans= 0 ;
for ( int j= 0 ; j< 2 * n; j++ )
{
int x, y;
scanf ( "%d%d" , & x, & y) ;
if ( x== 0 )
a. push_back ( abs ( y) ) ;
else
b. push_back ( abs ( x) ) ;
}
sort ( a. begin ( ) , a. end ( ) ) ;
sort ( b. begin ( ) , b. end ( ) ) ;
for ( int i= 0 ; i< n; i++ )
{
ans+ = sqrt ( a[ i] * a[ i] + b[ i] * b[ i] ) ;
}
printf ( "%.20f\n" , ans) ;
}
}