Submission #7328671
Source Code Expand
#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
void *wmem;
template<class T> inline void walloc1d(T **arr, int x, void **mem = &wmem){
static int skip[16]={0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
(*mem) = (void*)( ((char*)(*mem)) + skip[((unsigned long long)(*mem)) & 15] );
(*arr)=(T*)(*mem);
(*mem)=((*arr)+x);
}
void sortF_L(int N, unsigned A[], void *mem = wmem){
int bt, i, m, *sz;
unsigned *arr, c;
if(N < 256){
sort(A, A+N);
return;
}
bt = sizeof(unsigned) * 8;
walloc1d(&arr, N, &mem);
walloc1d(&sz, N, &mem);
for(m=0;m<bt;m+=8){
for(i=0;i<(257);i++){
sz[i] = 0;
}
for(i=0;i<(N);i++){
sz[ 1+((A[i]>>m)&255u) ]++;
}
for(i=(1);i<(257);i++){
sz[i] += sz[i-1];
}
for(i=0;i<(N);i++){
c = ((A[i]>>m)&255u);
arr[sz[c]++] = A[i];
}
swap(A, arr);
}
}
void sortF_L(int N, int A[], void *mem = wmem){
int *arr, i, x, y, z;
unsigned *send;
if(N < 256){
sort(A, A+N);
return;
}
send = (unsigned*)A;
sortF_L(N, send, mem);
if(A[0] < 0 || A[N-1] >= 0){
return;
}
x = 0;
y = N;
while(x < y){
z = (x+y) / 2;
if(A[z] < 0){
y = z;
}
else{
x = z+1;
}
}
walloc1d(&arr, N, &mem);
z = 0;
for(i=(x);i<(N);i++){
arr[z++] = A[i];
}
for(i=0;i<(x);i++){
arr[z++] = A[i];
}
for(i=0;i<(N);i++){
A[i] = arr[i];
}
}
void sortF_L(int N, unsigned long long A[], void *mem = wmem){
int bt, i, m, *sz;
unsigned c;
unsigned long long *arr;
if(N < 512){
sort(A, A+N);
return;
}
bt = sizeof(unsigned long long) * 8;
walloc1d(&arr, N, &mem);
walloc1d(&sz, N, &mem);
for(m=0;m<bt;m+=8){
for(i=0;i<(257);i++){
sz[i] = 0;
}
for(i=0;i<(N);i++){
sz[ 1+((A[i]>>m)&255u) ]++;
}
for(i=(1);i<(257);i++){
sz[i] += sz[i-1];
}
for(i=0;i<(N);i++){
c = ((A[i]>>m)&255u);
arr[sz[c]++] = A[i];
}
swap(A, arr);
}
}
void sortF_L(int N, long long A[], void *mem = wmem){
int i, x, y, z;
long long *arr;
unsigned long long *send;
if(N < 512){
sort(A, A+N);
return;
}
send = (unsigned long long*)A;
sortF_L(N, send, mem);
if(A[0] < 0 || A[N-1] >= 0){
return;
}
x = 0;
y = N;
while(x < y){
z = (x+y) / 2;
if(A[z] < 0){
y = z;
}
else{
x = z+1;
}
}
walloc1d(&arr, N, &mem);
z = 0;
for(i=(x);i<(N);i++){
arr[z++] = A[i];
}
for(i=0;i<(x);i++){
arr[z++] = A[i];
}
for(i=0;i<(N);i++){
A[i] = arr[i];
}
}
inline void rd(int &x){
int k, m=0;
x=0;
for(;;){
k = getchar_unlocked();
if(k=='-'){
m=1;
break;
}
if('0'<=k&&k<='9'){
x=k-'0';
break;
}
}
for(;;){
k = getchar_unlocked();
if(k<'0'||k>'9'){
break;
}
x=x*10+k-'0';
}
if(m){
x=-x;
}
}
inline void wt_L(char a){
putchar_unlocked(a);
}
inline void wt_L(double x){
printf("%.15f",x);
}
char memarr[96000000];
int N;
int K;
int A[100000];
int main(){
double res=0;
int i;
wmem = memarr;
rd(N);
rd(K);
{
int Lj4PdHRW;
for(Lj4PdHRW=0;Lj4PdHRW<(N);Lj4PdHRW++){
rd(A[Lj4PdHRW]);
}
}
sortF_L(N,A);
for(i=0;i<(K);i++){
res += (double)(A[i] + A[N-K+i]) / A[N-K+i];
}
wt_L(res);
wt_L('\n');
return 0;
}
// cLay varsion 20190902-1
// --- original code ---
// int N, K, A[1d5];
// {
// double res = 0;
//
// rd(N,K,A(N));
// sortF(N,A);
//
// rep(i,K) res += (double)(A[i] + A[N-K+i]) / A[N-K+i];
// wt(res);
// }
Submission Info
| Submission Time |
|
| Task |
H - 打鍵戦争 |
| User |
LayCurse |
| Language |
C++14 (GCC 5.4.1) |
| Score |
700 |
| Code Size |
3781 Byte |
| Status |
AC |
| Exec Time |
6 ms |
| Memory |
1024 KiB |
Judge Result
| Set Name |
Sample |
Subtask1 |
| Score / Max Score |
0 / 0 |
700 / 700 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
sample_01.txt, sample_02.txt, sample_03.txt |
| Subtask1 |
sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt |
| Case Name |
Status |
Exec Time |
Memory |
| sample_01.txt |
AC |
1 ms |
256 KiB |
| sample_02.txt |
AC |
1 ms |
256 KiB |
| sample_03.txt |
AC |
1 ms |
256 KiB |
| test_01.txt |
AC |
1 ms |
256 KiB |
| test_02.txt |
AC |
1 ms |
256 KiB |
| test_03.txt |
AC |
1 ms |
256 KiB |
| test_04.txt |
AC |
1 ms |
256 KiB |
| test_05.txt |
AC |
1 ms |
256 KiB |
| test_06.txt |
AC |
1 ms |
256 KiB |
| test_07.txt |
AC |
4 ms |
768 KiB |
| test_08.txt |
AC |
4 ms |
768 KiB |
| test_09.txt |
AC |
4 ms |
768 KiB |
| test_10.txt |
AC |
2 ms |
384 KiB |
| test_11.txt |
AC |
2 ms |
384 KiB |
| test_12.txt |
AC |
5 ms |
1024 KiB |
| test_13.txt |
AC |
5 ms |
1024 KiB |
| test_14.txt |
AC |
5 ms |
1024 KiB |
| test_15.txt |
AC |
5 ms |
1024 KiB |
| test_16.txt |
AC |
5 ms |
1024 KiB |
| test_17.txt |
AC |
5 ms |
1024 KiB |
| test_18.txt |
AC |
5 ms |
1024 KiB |
| test_19.txt |
AC |
5 ms |
1024 KiB |
| test_20.txt |
AC |
5 ms |
1024 KiB |
| test_21.txt |
AC |
5 ms |
1024 KiB |
| test_22.txt |
AC |
6 ms |
1024 KiB |
| test_23.txt |
AC |
6 ms |
1024 KiB |
| test_24.txt |
AC |
6 ms |
1024 KiB |
| test_25.txt |
AC |
5 ms |
1024 KiB |
| test_26.txt |
AC |
5 ms |
1024 KiB |
| test_27.txt |
AC |
5 ms |
1024 KiB |
| test_28.txt |
AC |
1 ms |
256 KiB |
| test_29.txt |
AC |
1 ms |
256 KiB |