问题标题: 酷町堂:小学萌新求助 1594 军队调度 代码错误

0
0
已解决
周琪岳
周琪岳
资深光能
资深光能

奉上WA(样例未过)(本人仅学到J2,请不要用太高深的方法,最好附上思路讲解,最优者采纳)

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
#include <cmath>

using namespace std;

int n,l,r,a[55]; 
int ans;
int cnt1,cnt2,keyi;
int b[55];
int main(){
	scanf("%d%d%d",&n,&l,&r);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
		if(a[i]<l){
			b[i]=-1;
			cnt1++;
		} else if(a[i]>=l&&a[i]<=r){
			b[i]=1;
			keyi++;
		}  else{
			b[i]=9;
			cnt2++;
		}
		
	}
	if(n<=0){
		cout<<0;
		return 0;
	}
	if(cnt1==cnt2) ans=cnt1;
	else if(cnt1>cnt2){
		cnt1=cnt1-cnt2;
		ans+=cnt1;
		for(int i=1;i<=n;i++){
			if(b[i]==1&&a[i]>l){
				cnt1-=a[i]-l;
				ans+=a[i]-l;
			}
		}
		if(cnt1!=0){
			cout<<-1;
			return 0;
		}
	} else{
		cnt2=cnt2-cnt1;
		ans+=cnt2;
		for(int i=1;i<=n;i++){
			if(b[i]==1&&a[i]<r){
				cnt2-=r-a[i];
				ans+=r-a[i];
			}
		}
		if(cnt2!=0){
			cout<<-1;
			return 0;
		}
	}
	cout<<ans;
	return 0;
}

 

周琪岳在2020-11-13 19:14:32追加了内容

我顶

周琪岳在2020-11-17 17:08:32追加了内容

谁能帮我采纳一下??????


0
0
我要回答