8 条题解

  • 1
    @ 2023-10-21 15:41:01
    #include<algorithm>
    using namespace std;
    int i, j, N, maxload, num, cnt, nums[1009], left, right;
    bool cmp(int a, int b) {
    	return a < b;
    }
    int main (void) {
    	scanf("%d", &N);
    	while (N--) {
    		cnt = 0;
    		scanf("%d %d", &maxload, &num);
    		for (i = 0; i < num; i++) {
    			scanf("%d", &nums[i]);
    		}
    		sort(nums, nums + num, cmp);
    //		for(i=0;i<num;i++){
    //			printf("%d ",nums[i]);
    //				}
    //		printf("\n");
    		left = 0;
    		right = num - 1;
    		j = 1;
    		while (left <= right) {
    //			printf("变之前:\n");
    //			printf("第%d次:   left=%d   right=%d \n", j, left, right);
    			if (nums[left] + nums[right] <= maxload) {
    				cnt++;
    				left++;
    				right--;
    
    			} else {
    				right--;
    				cnt++;
    			}
    			if (left >right) {
    				break;
    			}
    //			printf("变之后:\n");
    //			printf("第%d次:   left=%d   right=%d \n", j, left, right);
    //			printf("cnt=%d\n",cnt);
    			j++;
    		}
    		printf("%d\n", cnt);
    	}
    }
    

    信息

    ID
    148
    时间
    3000ms
    内存
    128MiB
    难度
    6
    标签
    (无)
    递交数
    520
    已通过
    173
    上传者