/* 小米共有m个箱子用于打包行李,每个箱子承重为w。现有n件行李排成一行,重量为ai, 小米将从左向右开始打包。如果当前箱子装入该行李不会超重则优先装在当前箱子, 如果会超重则将当前箱子密封,将该行李装入下一个新的箱子中。小米更偏爱放在右边的行李, 所以为了能装入更多行李,他会选择从最左边开始连续地舍弃一些行李,以保证剩下的行李可以全部装完。 现在想知道,他最多可以装入多少件行李? 输入: 5 2 8 6 3 2 5 3 输出: 4 */ #include int main(){ int n, m; long long w; scanf("%d %d %lld",&n,&m, &w); long long weights[n]; for(int i=0;i=0){ if(currentweight + weights[rightIndex]<=w){ currentweight += weights[rightIndex]; } else { boxcount++; currentweight = weights[rightIndex]; } rightIndex--; if(boxcount>m){ rightIndex++; break; } } int itemsPacked=n - (rightIndex + 1); printf("%d\n",itemsPacked); return 0; }