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 |
|
|
|
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 |