日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

牛客网--2019校招--丰收

發布時間:2024/7/19 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客网--2019校招--丰收 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

又到了豐收的季節,恰逢小易去牛牛的果園里游玩。
牛牛常說他對整個果園的每個地方都了如指掌,小易不太相信,所以他想考考牛牛。
在果園里有N堆蘋果,每堆蘋果的數量為ai,小易希望知道從左往右數第x個蘋果是屬于哪一堆的。
牛牛覺得這個問題太簡單,所以希望你來替他回答。

輸入描述:

第一行一個數n(1 <= n <= 105)。 第二行n個數ai(1 <= ai?<= 1000),表示從左往右數第i堆有多少蘋果 第三行一個數m(1 <= m <= 105),表示有m次詢問。 第四行m個數qi,表示小易希望知道第qi個蘋果屬于哪一堆。

輸出描述:

m行,第i行輸出第qi個蘋果屬于哪一堆。

示例1

輸入

復制

5 2 7 3 4 9 3 1 25 11

輸出

復制

1 5 3

先將要輸入的多組詢問排序,之后從頭開始遍歷蘋果堆,如果連數值較小的詢問當前都無法滿足,那么大的詢問自然無法滿足

之后再將詢問恢復之前的次序輸出即可

#include<stdio.h>
#include<iostream>
#include <algorithm>
using namespace std;
typedef struct Test1
{
?? ?int Num; ? //記錄各次詢問的值?
?? ?int No; ? ?//記錄各詢問一開始的序號,方便最后恢復次序?
?? ?int flag; ?//記錄屬于第幾堆?
}Test;
bool cmp1(Test x,Test y)
{
?? ?return x.Num<y.Num;
}
bool cmp2(Test x,Test y)
{
?? ?return x.No<y.No;
}
int main()
{
?? ?int n,m,i,sum=0,j;
?? ?scanf("%d",&n);
?? ?int a[n];
?? ?for(i=0;i<n;i++)
?? ?{
?? ??? ?scanf("%d",&a[i]);
?? ?}
?? ?scanf("%d",&m);
?? ?Test b[m];
?? ?for(i=0;i<m;i++)
?? ?{
?? ??? ?scanf("%d",&b[i].Num);
?? ??? ?b[i].No=i;
?? ?}
?? ?sort(b,b+m,cmp1);
?? ?j=0;
?? ?sum=a[0];
?? ?for(i=0;i<m;)
?? ?{
?? ??? ?if(b[i].Num<=sum)
?? ??? ?{
?? ??? ??? ?b[i].flag=j;
?? ??? ??? ?i++;
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?j=j+1;
?? ??? ??? ?sum+=a[j];
?? ??? ?}
?? ?}
?? ?sort(b,b+m,cmp2);
?? ?for(i=0;i<m;i++)
?? ?{
?? ??? ?printf("%d\n",b[i].flag+1);
?? ?}
}

總結

以上是生活随笔為你收集整理的牛客网--2019校招--丰收的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。