Submission #1771625


Source Code Expand

#include <cstdio>
using namespace std;
void quick_sort(long numbers[], long length){
  if (length == 1 || length == 0){
    return;
  }
  long border = numbers[0];
  long left[length];
  long right[length];
  long i = 0;
  long j = 0;
  for (long k = 1; k < length; k++){
    if (numbers[k] < border){
      left[i] = numbers[k];
      i++;
    }
    else {
      right[j] = numbers[k];
      j++;
    }
  }
  quick_sort(left, i);
  quick_sort(right, j);
  for (long l = 0; l < i; l++){
    numbers[l] = left[l];
  }
  numbers[i] = border;
  for(long l = i + 1; l < length; l++){
    numbers[l] = right[l - i - 1];
  }
}
int main(){
  long index;
  scanf("%ld", &index);
  long *difficulties = new long[index];
  for(long i = 0; i < index; i++){
    scanf("%ld", difficulties + i);
  }
  quick_sort(difficulties, index);
  long *multi_indexes = new long[index];
  long current_polonger = 0;
  for(long i = 0; i < index; i++){
    while(true){
      if (current_polonger == index){
        break;
      }
      if (difficulties[current_polonger] >= difficulties[i] * 2){
        multi_indexes[i] = current_polonger;
        break;
      }
      else{
        current_polonger++;
      }
    }
    if (current_polonger == index){
      for (long j = i; j < index; j++){
        multi_indexes[j] = -1;
      }
      break;
    }
  }
  delete[] difficulties;
  long *two_choice = new long[index];
  for(long i = 0; i < index; i++){
    if(multi_indexes[i] >= 0){
      two_choice[i] = index - multi_indexes[i];
    }
    else{
      two_choice[i] = 0;
    }
  }
  current_polonger = index - 1;
  long *three_choice = new long[index];
  long sum = 0;
  for(long i = index - 1; i >= 0; i--){
    if(multi_indexes[i] < 0){
      three_choice[i] = 0;
    }
    else{
      while(current_polonger >= multi_indexes[i]){
        sum += two_choice[current_polonger] % 1000000007;
        current_polonger--;
        sum = sum % 1000000007;
      }
      three_choice[i] = sum;
    }
  }
  delete[] two_choice;
  current_polonger = index - 1;
  long *four_choice = new long[index];
  sum = 0;
  for(long i = index - 1; i >= 0; i--){
    if(multi_indexes[i] < 0){
      four_choice[i] = 0;
    }
    else{
      while(current_polonger >= multi_indexes[i]){
        sum += three_choice[current_polonger] % 1000000007;
        current_polonger--;
        sum = sum % 1000000007;
      }
      four_choice[i] = sum;
    }
  }
  delete[] multi_indexes;
  delete[] three_choice;
  long result = 0;
  for(long i = 0; i < index; i++){
    result += four_choice[i];
    result = result % 1000000007;
  }
    printf("%ld\n", result % 1000000007);
}

Submission Info

Submission Time
Task B - 難易度
User liwii
Language C++14 (GCC 5.4.1)
Score 50
Code Size 2737 Byte
Status RE
Exec Time 322 ms
Memory 132096 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:34:23: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%ld", &index);
                       ^
./Main.cpp:37:35: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%ld", difficulties + i);
                                   ^

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 50 / 50 0 / 50
Status
AC × 3
AC × 22
AC × 41
RE × 2
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
Subtask1 sample_01.txt, sample_02.txt, sample_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt
Subtask2 sample_01.txt, sample_02.txt, sample_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt, subtask2_15.txt, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt, subtask2_21.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 256 KB
sample_02.txt AC 1 ms 256 KB
sample_03.txt AC 1 ms 256 KB
subtask1_01.txt AC 1 ms 256 KB
subtask1_02.txt AC 1 ms 256 KB
subtask1_03.txt AC 2 ms 512 KB
subtask1_04.txt AC 2 ms 384 KB
subtask1_05.txt AC 2 ms 384 KB
subtask1_06.txt AC 2 ms 512 KB
subtask1_07.txt AC 2 ms 384 KB
subtask1_08.txt AC 2 ms 512 KB
subtask1_09.txt AC 2 ms 384 KB
subtask1_10.txt AC 2 ms 384 KB
subtask1_11.txt AC 2 ms 384 KB
subtask1_12.txt AC 2 ms 384 KB
subtask1_13.txt AC 2 ms 384 KB
subtask1_14.txt AC 2 ms 384 KB
subtask1_15.txt AC 2 ms 512 KB
subtask1_16.txt AC 2 ms 512 KB
subtask1_17.txt AC 2 ms 512 KB
subtask1_18.txt AC 2 ms 512 KB
subtask1_19.txt AC 2 ms 512 KB
subtask2_01.txt AC 8 ms 2576 KB
subtask2_02.txt AC 7 ms 2100 KB
subtask2_03.txt AC 4 ms 1152 KB
subtask2_04.txt AC 4 ms 1152 KB
subtask2_05.txt AC 20 ms 5912 KB
subtask2_06.txt AC 17 ms 4572 KB
subtask2_07.txt AC 2 ms 640 KB
subtask2_08.txt AC 2 ms 512 KB
subtask2_09.txt AC 21 ms 6768 KB
subtask2_10.txt AC 13 ms 4728 KB
subtask2_11.txt AC 2 ms 640 KB
subtask2_12.txt AC 12 ms 3348 KB
subtask2_13.txt AC 3 ms 1024 KB
subtask2_14.txt AC 15 ms 4516 KB
subtask2_15.txt AC 25 ms 6384 KB
subtask2_16.txt AC 25 ms 7152 KB
subtask2_17.txt AC 25 ms 7792 KB
subtask2_18.txt AC 26 ms 9840 KB
subtask2_19.txt AC 26 ms 8688 KB
subtask2_20.txt RE 322 ms 132096 KB
subtask2_21.txt RE 184 ms 132096 KB