80求调
查看原帖
80求调
1321313
zuojiarui楼主2025/8/5 16:24
#include<bits/stdc++.h>
using namespace std;
int n;
int w[1001][3];
queue<pair<int,int> > q;//高度,长度 
int main(){
//	freopen("polygon.in","r",stdin);
//	freopen("polygon.out","w",stdout);
	cin>>n;
	int a,b;
	int x,y;
	cin>>b>>a;
	w[1][1]=a;
	w[1][2]=b;
	stack<pair<int,int> > s1,s2;
	int ans=0;
	for(int i=2;i<=n;i++){
		
		cin>>w[i][2]>>w[i][1];
		if(w[i][1]==a&&w[i][2]>b){
			int u=w[i][2]-b;
		//	cout<<1<<" ";
			while(!s2.empty()){
				
				pair<int,int> d=s2.top();
				s2.pop();
				
				
				if(d.second>u){
					
					ans+=u*(d.first-a);
					
					u-=u;
					d.second-=u;
					s2.push(d);
					break;
				} else{
					ans+=d.second*(d.first-a);
					u-=d.second;
				}
			}
			if(u!=0){
				s1.push({a,u});
			}
			
		}else if(w[i][1]==a&&w[i][2]<=b){
	//		cout<<1<<" ";
			int u=b-w[i][2];
			while(!s1.empty()){
				pair<int,int> d=s1.top();
				s1.pop();
				
				if(d.second>u){
					
					ans+=u*(a-d.first);
					u-=u;
					d.second-=u;
					s1.push(d);
					break;
				} else{
					ans+=d.second*(a-d.first);
					u-=d.second;
				}
			}
			if(u!=0){
				s2.push({a,u});
			}
		}
		a=w[i][1];
		b=w[i][2];
	//	cout<<ans<<" ";
	}
	int i=1;
	//cout<<w[i][1]<<w[i][2]<<a<<b;
	if(w[i][1]==a&&w[i][2]>b){
			int u=w[i][2]-b;
		//	cout<<1<<" ";
			while(!s2.empty()){
				
				pair<int,int> d=s2.top();
				s2.pop();
				
				
				if(d.second>=u){
					
					ans+=u*(d.first-a);
					
					u-=u;
					d.second-=u;
					s2.push(d);
					break;
				} else{
					ans+=d.second*(d.first-a);
					u-=d.second;
				}
			}
			if(u!=0){
				s1.push({a,u});
			}
			
		}else if(w[i][1]==a&&w[i][2]<=b){
		//	cout<<1<<" ";
			int u=b-w[i][2];
			while(!s1.empty()){
				pair<int,int> d=s1.top();
				s1.pop();
			//	cout<<d.first<<" "<<d.second<<" "; 
			//	cout<<u<<" "; 
				if(d.second>=u){
					
					ans+=u*(a-d.first);
					u-=u;
					d.second-=u;
					s1.push(d);
					break;
				} else{
					ans+=d.second*(a-d.first);
					u-=d.second;
				}
			}
			if(u!=0){
				s2.push({a,u});
			}
		}
	cout<<abs(ans); 
	return 0;
}

2025/8/5 16:24
加载中...