#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main() {
int s;
cin >> s;
double ans = -1E9;
double mxeven = -1E9, mxodd = -1E9;
for (double i = 2; i < s; i += 2) {
mxeven = max(mxeven, cos( (i - 2) / 2 ));
ans = max(ans,
2. * sin(i/2) * mxeven + sin(s - i));
}
for (double i = 3; i < s; i += 2) {
mxodd = max(mxodd, cos( (i - 2) / 2 ));
ans = max(ans,
2. * sin(i/2) * mxodd + sin(s - i));
}
cout << fixed << setprecision(9) << ans << endl;
return 0;
}
Insertion Sort Advanced Analysis
#include<iostream>
#include<cstdio>
using namespace std;
long long ans=0;
void mergei(int a[],int i,int j)
{
int ni=((i+j)/2)+1,nj=j+1;
int s=i;
int * arr = new int [j-i+1];
j=ni;
int k=0;
while(i<ni && j<nj)
{
if(a[i]<=a[j])
{
arr[k]=a[i];
i++;
}
else
{
arr[k]=a[j];
ans+=(ni-i);
j++;
}
k++;
}
for(;i<ni;i++,k++)
arr[k]=a[i];
for(;j<nj;j++,k++)
arr[k]=a[j];
for(k=0;s<nj;s++,k++)
a[s]=arr[k];
delete [] arr;
}
void m_sort(int a[],int i,int j)
{
if(i<j)
{
m_sort(a,i,(i+j)/2);
m_sort(a,((i+j)/2)+1,j);
mergei(a,i,j);
}
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
ans=0;
scanf("%d",&n);
int * a = new int[n];
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
m_sort(a,0,n-1);
cout<<ans<<endl;
}
return 0;
}
Fraudulent Activity Notifications
#include <iostream>
#include <vector>
#include <map>
#include <set>
#include <algorithm>
using namespace std;
#define MAXE 210
int A[200010];
int F[MAXE];
int median2(int D) {
int p = 0;
for (int i = 0; i < MAXE; i++) {
p += F[i];
if (p * 2 > D) {
return 2 * i;
} else if (p * 2 == D) {
for (int j = i + 1; ; j++) {
if (F[j]) {
return i + j;
}
}
}
}
return -1;
}
int main() {
int N, D;
cin >> N >> D;
for (int i = 0; i < N; i++) {
cin >> A[i];
}
int result = 0;
for (int i = 0; i < N; i++) {
if (i >= D) {
if (A[i] >= median2(D)) {
++result;
}
F[A[i - D]]--;
}
F[A[i]]++;
}
cout << result << endl;
return 0;
}





