QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#574644#9313. Make MaxAntonioniWA 0ms3632kbC++171.3kb2024-09-18 23:31:282024-09-18 23:31:29

Judging History

你现在查看的是最新测评结果

  • [2024-09-18 23:31:29]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3632kb
  • [2024-09-18 23:31:28]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int N =2e5+5;

typedef struct k{
	int l,r,v;
} kk;
#define inf 0x7ffff 
map<int,vector<kk>>mp;
kk pp[N];
void solve(){
	int n;cin>>n;int arr[n+1];
	int ans=0;
	kk last;
	int maxx=0;
	cin>>arr[1];
	maxx=arr[1];
	last.l=1;
	last.v=arr[1];
	for(int i=2;i<=n;i++){
		cin>>arr[i];
		maxx=max(maxx,arr[i]); 
		if(arr[i]!=last.v){
			mp[last.v].push_back({last.l,i-1,last.v});
			last.l=i;
			last.v=arr[i];
		}
	}
	mp[last.v].push_back({last.l,n,last.v});
	for(auto it:mp){
		if(it.first==maxx){
			break;
		}
		sort(it.second.begin(),it.second.end(),[&](kk x,kk y){
			return x.l<y.l;
		});
		
		int p=0;int q=0;
		for(auto i:it.second){
			pp[++p]=i;
		}
		for (int i = 2; i <= p; ++i)
				{
					if (pp[q].r + 1 == pp[i].l)
					{
						pp[q].r = pp[i].r;
					}
				else {
					q++;
					pp[q]=pp[i];
				}
		}
		
		it.second.clear();
		for (int i = 1; i <= q; ++i)
				{
					it.second.push_back(pp[i]);
				}
				
		for(auto i:it.second){
			int m1=arr[i.l-1];
			int m2=arr[i.r+1];
			int minn=min(m1,m2);
			ans+=i.r-i.l+1;
			mp[minn].push_back({i.l,i.r,minn});
			
		}
	}
	cout<<ans;
	cout<<endl;
	mp.clear();
}
int main(){
	int t;
	cin>>t;
	while(t--){
		solve();
	}
} 

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3632kb

input:

4
2
1 2
2
2 2
7
1 1 1 2 2 2 2
3
1 2 3

output:

0
0
0
0

result:

wrong answer 1st numbers differ - expected: '1', found: '0'