153622025-02-19 09:02:23ZsBalazsMaximális szorzat (50 pont)cpp17Futási hiba 43/5074ms1904 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
	int n, k, b;
	cin >> n >> k >> b;
	
	vector<int> elemek;
	
	for (int i = 0; n > i; i++) {
	    int temp;
	    cin >> temp;
	    
	    elemek.push_back(temp);
	}
	
	vector<int> negati;
	vector<int> pozi;
	
	for (int elem : elemek) {
	    if (elem < 0) {
	        negati.push_back(elem);
	    } else {
	        pozi.push_back(elem);
	    }
	}
	
	// csokkeno sorrend
	sort(negati.rbegin(), negati.rend());
    
    int valt = negati.size() - b;
    
    if (valt < 0) {
        cout << -1 << endl; 
        return 0;
    }
    
    int felhasznalt = 0;
    
    for (int i = 0; valt > i; i++) {
        felhasznalt += (0 - negati[i]);
        pozi.push_back(0);
    }
    
    int hasznalhato = k - felhasznalt;
    
    if (hasznalhato < 0) {
        cout << -1 << endl; 
        return 0;
    }
    
    priority_queue<int> szamok;
    
    for (int szam : pozi) {
        szamok.push(szam * -1);
    }
    
    while (hasznalhato--) {
        int current = szamok.top() * -1;
        szamok.pop();
        
        szamok.push((current+1) * -1);
    }
    
    long long szorzat = 1;
    
    while (!szamok.empty()) {
        szorzat = (szorzat * (long long)(szamok.top() * -1)) % 1000000007;
        szamok.pop();
    }
    
    for (int i = valt; negati.size() > i; i++) {
        szorzat = (szorzat * (long long)(negati[i] * -1)) % 1000000007;
    }
    
    cout << szorzat << endl;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base43/50
1Elfogadva0/01ms500 KiB
2Elfogadva0/01ms508 KiB
3Elfogadva0/01ms316 KiB
4Elfogadva0/01ms316 KiB
5Elfogadva0/04ms564 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva2/21ms316 KiB
9Elfogadva2/21ms364 KiB
10Elfogadva2/26ms564 KiB
11Elfogadva2/268ms1904 KiB
12Elfogadva1/174ms1848 KiB
13Elfogadva1/11ms316 KiB
14Elfogadva1/16ms580 KiB
15Elfogadva1/118ms892 KiB
16Elfogadva1/135ms944 KiB
17Elfogadva1/120ms904 KiB
18Elfogadva1/112ms1068 KiB
19Futási hiba0/143ms1448 KiB
20Futási hiba0/132ms1540 KiB
21Futási hiba0/159ms1548 KiB
22Futási hiba0/125ms1436 KiB
23Elfogadva1/172ms1708 KiB
24Elfogadva1/174ms1900 KiB
25Elfogadva2/21ms316 KiB
26Elfogadva2/26ms364 KiB
27Futási hiba0/229ms900 KiB
28Futási hiba0/129ms976 KiB
29Elfogadva2/223ms944 KiB
30Elfogadva1/161ms1448 KiB
31Elfogadva1/132ms1452 KiB
32Elfogadva2/22ms316 KiB
33Elfogadva2/263ms1536 KiB
34Elfogadva1/164ms1508 KiB
35Elfogadva2/264ms1452 KiB
36Elfogadva2/261ms1452 KiB
37Elfogadva2/261ms1556 KiB
38Elfogadva2/261ms1452 KiB
39Elfogadva1/11ms316 KiB