L2-017 Las personas se dividen en grupos (codiciosos)

enlace de tema

https://pintia.cn/problem-sets/994805046380707840/problems/994805061056577536

ideas

Pensando con avidez, si primero clasificamos a estas personas de pequeñas a grandes y luego las dividimos en dos partes, entonces debe haber dos partes extremas, y debido a que es probable que los dos grupos de personas estén cerca, entonces cuando nnCuando n es un número par, divídalo directamente en dos montones del mismo número de personas; de lo contrario, deberíamos hacer queoutgoingel número de personas en ese monto sea un poco más grande, de modo que podamos aumentar la brecha

código

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 1000000007
#define endl "\n"
#define PII pair<int,int>
#define INF 0x3f3f3f3f

int n;

int main()
{
    
    
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>n;
	vector<int> V(n);
	for(int i = 0;i < n; ++i) cin>>V[i];
	sort(V.begin(),V.end());
	int l = n/2,r = n - l;
	cout<<"Outgoing #: "<<r<<endl;
	cout<<"Introverted #: "<<l<<endl;
	int ans = 0;
	for(int i = 0;i < n; ++i) {
    
    
		if(i < l) ans -= V[i];
		else ans += V[i];
	}
	cout<<"Diff = "<<ans<<endl;
	return 0;
}

Supongo que te gusta

Origin blog.csdn.net/m0_46201544/article/details/123963483
Recomendado
Clasificación