问题标题: 酷町堂:2607 重堆干草

0
0
已解决
周琪岳
周琪岳
资深光能
资深光能

 

2607   重堆干草

#include <iostream>
#include <algorithm>
 
using namespace std;

int n,ans;
struct stu{
	int x,y,z;
	int flag;
}a[1005];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i].x>>a[i].y;
		if(a[i].x>a[i].y){
			a[i].flag=1;
			a[i].z=a[i].x-a[i].y;
		} else if(a[i].x<a[i].y){
			a[i].flag=-1;
			a[i].z=a[i].y-a[i].x;
		} else{
			a[i].flag=0;
			a[i].z=0;
		}
	}
	for(int i=1;i<=n;i++){
		if(a[i].flag==1){
			for(int j=i+1;j<=n;j++){
				int k;
				if(a[j].flag==-1){
					if(a[j].z>=a[i].z){
						k=a[i].z;
						a[i].z=0;
						a[j].z-=k;
						ans+=k*(j-i);
					} else{
						k=a[j].z;
						a[j].z=0;
						a[i].z-=k;
						ans+=*(j-i);
					}
				}
				if(a[i].z==0){
					a[i].flag=0;
					break;
				}
			}
		} else if(a[i].flag==-1){
			for(int j=i+1;j<=n;j++){
				int k;
				if(a[j].flag==1){
					if(a[j].z>=a[i].z){
						k=a[i].z;
						a[i].z=0;
						a[j].z-=k;
						ans+=k*(j-i);
					} else{
						k=a[j].z;
						a[j].z=0;
						a[i].z-=k;
						ans+=k*(j-i);
					}
				}
				if(a[i].z==0){
					a[i].flag=0;
					break;
				}
			}
		}
	}
	cout<<ans;
	return 0;
}

 

周琪岳在2020-11-21 13:46:05追加了内容

@葛新 @酷町喵~o( =∩ω∩= )o~  @酷町侠 @王浩 @崔竣恺 


0
0
0
我要回答