251882026-02-18 12:13:53linhnkSzorzatország csapata (40 pont)cpp17Futási hiba 7/4023ms1432 KiB
#include <bits/stdc++.h>
#include <cmath>
using namespace std;
using ll=long long;
int main() {
	
	ll n, d=1; cin>>n; vector<int> comp(n);
	priority_queue<pair<ll, pair<int, int>>> que;
	for(int i=0; i<n; i++){
		cin>>comp[i];
	}
	int beg=-1, end;
	for(int i=0; i<n; i++){
		if(comp[i]==0){
			end=i;
			if(end-beg<2){				
				que.push({0, {beg, end}}); beg++; continue;
			}
			if(d<0){
				int a=beg+1, b=end-1, da=d, db=d;
				while(da<0&&a<end){
					da/=comp[a];
					a++;
				}
				while(db<0&&b>beg){
					db/=comp[b];
					b--;
				}
				if(da<db) que.push({db, {beg+2, b+1}});
				else que.push({da, {a+1, end}});
			}
			else{
				que.push({d, {beg+2, end}});
			}
			beg=end;
			d=1;
		}
		else{
			d*=comp[i];
		}
	}
	end=n;
	if(end-beg<2){				
			que.push({0, {beg+1, end+1}});
		}
	if(d<0){
		int a=beg+1, b=end-1, da=d, db=d;
		while(da<0&&a<end){
			da/=comp[a];
			a++;
		}
		while(db<0&&b>beg){
			db/=comp[b];
			b--;
		}
		if(da<db) que.push({db, {beg+2, b+1}});
		else que.push({da, {a+1, end}});
	}
	else{
		que.push({d, {beg+2, end}});
	}
	cout<<que.top().second.first<<" "<<que.top().second.second;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base7/40
1Elfogadva0/01ms316 KiB
2Futási hiba0/018ms840 KiB
3Hibás válasz0/11ms316 KiB
4Hibás válasz0/11ms512 KiB
5Elfogadva1/11ms316 KiB
6Elfogadva1/11ms316 KiB
7Hibás válasz0/11ms316 KiB
8Elfogadva2/21ms396 KiB
9Hibás válasz0/21ms316 KiB
10Hibás válasz0/321ms800 KiB
11Elfogadva3/320ms1432 KiB
12Hibás válasz0/318ms580 KiB
13Futási hiba0/420ms820 KiB
14Hibás válasz0/418ms612 KiB
15Hibás válasz0/418ms808 KiB
16Futási hiba0/523ms820 KiB
17Hibás válasz0/519ms820 KiB