题解 | #牛牛的数组匹配#
牛牛的数组匹配
https://www.nowcoder.com/practice/3d3406f4a7eb4346b025cc592be5b875
#include <stdio.h> #include <stdlib.h> #include <limits.h> int main() { int a, b,suma=0; scanf("%d %d", &a, &b); while(a--) { int n; scanf("%d",&n); suma+=n; } int i,j,left,left2=0,right,right2=b-1,sumb=0,tmp,min=INT_MAX,*arr=malloc(sizeof(int)*b); while(~scanf("%d",arr+i++)); for(i=0;i<b;i++) { for(j=i;j<b;j++) { sumb+=arr[j]; if(sumb>suma) { left=i; if(suma-sumb+arr[j]<=sumb-suma) right=j-1,sumb-=arr[j]; else right=j; tmp=sumb-suma; if(tmp<0) tmp=-tmp; if(tmp<min) { min=tmp; left2=left,right2=right; } break; } } sumb=0; } for(i=left2;i<=right2;i++) { printf("%d ",arr[i]); } return 0; }