大神帮忙!!!!

P1109 学生分组

你少判断了一种情况吧,如果a[i]<l时也要算下,最后和超出部分ans2比较,输出较小的。 我看题解里就有。
by jiuguaiwf @ 2017-07-22 16:46:53


```cpp #include<iostream> #include<cstdio> using namespace std; int a[51]; int l,r,n,i,j,k,sum=0,t=0; int found(int b[],string str){ int jiduan,p; if (str=="max") { jiduan=-1; for(k=1;k<=n;k++) { if (b[k]>jiduan) {jiduan=b[k];p=k;} } return p; } if (str=="min") { jiduan=2147483647; for(k=1;k<=n;k++) { if (b[k]<jiduan) {jiduan=b[k];p=k;} } return p; } } int main() { int x; cin>>n; for(i=1;i<=n;i++) scanf("%d",&a[i]); cin>>l>>r; for(i=1;i<=n;i++) sum+=a[i]; if (l*n>sum || r*n<sum) {cout<<-1;return 0;} for(i=1;i<=n;i++) { if (a[i]<l) { j=l-a[i]; a[i]=l; x=found(a,"max"); a[x]=a[x]-j; t+=j; } if (a[i]>r) { j=a[i]-r; a[i]=r; x=found(a,"min"); a[x]=a[x]+j; t+=j; } } cout<<t; } ``` ### 求帮忙!WA了三个点,70分!!!
by 海滨WA声 @ 2018-02-15 18:24:46


没事、
by 郭光正12138 @ 2018-11-09 19:07:16


|