In this HackerEarth Specialty of a sequence problem solution, You are given a sequence A of length n and a number k. A number A[l] is special if there exists a contiguous subarray that contains exactly k numbers that are strictly greater than A[l]. The specialty of a sequence is the sum of special numbers that are available in the sequence. Your task is to determine the specialty of the provided sequence.
HackerEarth Specialty of a sequence problem solution.
#include<iostream>
#include<algorithm>
using namespace std;
#define forn(i,n) for(int i = 0; i < n; i++)
#define ln endl
typedef long long ll;
int main(){
int n,k;
cin>>n>>k;
ll a[n];
ll ans = 0;
ll tot = 0;
forn(i,n){
cin>>a[i];
tot += a[i];
}
sort(a,a+n,greater<ll>());
forn(i,n){
if(a[i]<a[k-1]) break;
ans += a[i];
}
cout<<tot-ans<<ln;
return 0;
}
Second solution
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 14;
int n, k, a[maxn];
int main(){
ios::sync_with_stdio(0), cin.tie(0);
cin >> n >> k;
for(int i = 0; i < n; i++)
cin >> a[i];
sort(a, a + n);
cout << accumulate(a, lower_bound(a, a + n, a[n - k]), 0ll) << '\n';
}
0 Comments