146312025-01-21 16:09:58mateMaximális szorzat (50 pont)cpp17Hibás válasz 8/50298ms1268 KiB
#include <algorithm>
#include <bits/stdc++.h>
#include <iostream>
using namespace std;

const long long MOD = 1000000007;

int main() {
	int n,k,b; cin >> n >> k >> b;
	vector <long long> v(n,0);
	int neg = 0;
	for(int i = 0; i < n; i++){
		cin >> v[i];
		if(v[i] < 0){
			neg++;
		}
	}
	sort(v.begin(),v.end());
	int index = lower_bound(v.begin(),v.end(),0) - v.begin();
	int jindex = index;
	bool vege = 0;
	for(int i = index; k > 0; i--){
		if(neg <= b){
			vege = 1;
			jindex = i;
			break;
		}
		while(v[i] < 0 && k > 0){
			v[i]++;
			k--;
		}
		neg--;
		
	}

	if(!vege){
		cout << -1;
		exit(0);
	}
	vege = 0;
	bool ugras = 0;
	int j = jindex + 1;
	while(k > 0){
		for(int i = jindex; i < j; i++){
			while(v[i] < v[j] && k > 0){
				v[i]++;
				k--;
				cerr << v[i] << ' ';
				if(i < n - 1) {
					if(v[i] > v[i+1]){
					i++;
					}
				}else{
					i = jindex;
				}
				
			}
			
			if(k == 0){
				vege = 1;
				break;
			}
			
		}
		if(vege)	break;
		j++;
		//cerr  << '\n';

	}

	long long ans = 1;
	for(int i = 0; i < n; i++){
		ans *= abs(v[i]) % MOD;
		ans %= MOD;
		cerr << v[i] << ' ';
	}
	
	cout << ans;
	
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base8/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms500 KiB
3Elfogadva0/01ms316 KiB
4Elfogadva0/01ms316 KiB
5Elfogadva0/014ms472 KiB
6Hibás válasz0/21ms316 KiB
7Hibás válasz0/21ms316 KiB
8Elfogadva2/21ms316 KiB
9Hibás válasz0/23ms316 KiB
10Hibás válasz0/228ms468 KiB
11Hibás válasz0/2280ms1196 KiB
12Hibás válasz0/1284ms1080 KiB
13Hibás válasz0/16ms380 KiB
14Hibás válasz0/146ms468 KiB
15Elfogadva1/120ms564 KiB
16Hibás válasz0/1216ms564 KiB
17Elfogadva1/120ms804 KiB
18Elfogadva1/148ms564 KiB
19Futási hiba0/141ms1076 KiB
20Futási hiba0/129ms1196 KiB
21Futási hiba0/159ms1080 KiB
22Futási hiba0/124ms1192 KiB
23Hibás válasz0/1298ms1080 KiB
24Hibás válasz0/1291ms1076 KiB
25Elfogadva2/225ms316 KiB
26Hibás válasz0/220ms472 KiB
27Futási hiba0/229ms820 KiB
28Futási hiba0/128ms824 KiB
29Hibás válasz0/2219ms564 KiB
30Futási hiba0/159ms1196 KiB
31Elfogadva1/141ms1204 KiB
32Futási hiba0/261ms412 KiB
33Futási hiba0/261ms1080 KiB
34Hibás válasz0/1293ms1200 KiB
35Hibás válasz0/2298ms1080 KiB
36Futási hiba0/268ms1080 KiB
37Futási hiba0/274ms1268 KiB
38Futási hiba0/259ms1076 KiB
39Futási hiba0/172ms316 KiB