252102026-02-18 13:10:19linhnkSzorzatország csapata (40 pont)cpp17Hibás válasz 8/4023ms1324 KiB
#include <bits/stdc++.h>
#include <cmath>
using namespace std;
using ll=long long;
int main() {
	ll n, d=0, p=0, k=-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];
		if(comp[i]==0) k=i;
	}
	que.push({0, {k, k}});
	if(n==1){
		cout<<1<<" "<<1; return 0;
	}
	int beg=-1, end;
	for(int i=0; i<=n; i++){
		if((i!=n&&comp[i]==0)||i==n){
			end=i;
			if(end-beg<2){	
				beg=end; d=0; p=0;		
				continue;
			}
			if(end-beg==2){
				que.push({d, {beg+1, end-1}}); beg=end; d=0; p=0; continue;
			}
			if(p%2==1){
				int a=beg+1, b=end-1, ad=0, bd=0;
				while(comp[a]>0&&a<end){
					if(comp[a]==2) ad++;
					a++;
				}
				if(a<end&&comp[a]==-2) ad++;
				while(comp[b]>0&&b>beg){
					if(comp[b]==2) bd++;
					b--;
				}
				if(b>beg&&comp[b]==-2) bd++;
				if(b>beg&&b-bd>a-ad) que.push({b-bd, {beg+1, b-1}});
				else if(a<end) que.push({a-ad, {a+1, end-1}});
			}
			else{
				que.push({d, {beg+1, end-1}});
			}
			beg=end;
			d=0;
			p=0;
		}
		else if(abs(comp[i])==2) d++;
		if(i<n&&comp[i]<0) p++;
	}
	cout<<que.top().second.first+1<<" "<<que.top().second.second+1;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base8/40
1Elfogadva0/01ms508 KiB
2Hibás válasz0/019ms820 KiB
3Elfogadva1/11ms316 KiB
4Elfogadva1/11ms316 KiB
5Elfogadva1/11ms316 KiB
6Elfogadva1/11ms316 KiB
7Hibás válasz0/11ms316 KiB
8Hibás válasz0/21ms316 KiB
9Hibás válasz0/21ms500 KiB
10Hibás válasz0/323ms804 KiB
11Hibás válasz0/321ms1324 KiB
12Hibás válasz0/318ms800 KiB
13Hibás válasz0/423ms800 KiB
14Hibás válasz0/418ms564 KiB
15Elfogadva4/418ms564 KiB
16Hibás válasz0/521ms800 KiB
17Hibás válasz0/518ms800 KiB