Pagini recente » Cod sursa (job #3332716) | Cod sursa (job #1822327) | Cod sursa (job #2718058) | Cod sursa (job #748509) | Cod sursa (job #3320721)
#include <bits/stdc++.h>
#define int long long
using namespace std;
int x[100005],y[100005],z[100005],sum[100005];
priority_queue<pair<int,int>>q;
signed main()
{
int n;
cin >>n;
int k;
cin >>k;
int arie=0;
for( int i=1; i<=n;i++){
cin >> x[i] >> y[i];
}
for ( int i=1; i<=n;i++){
cin >>z[i];
}
for ( int i=1;i<=n;i++){
if(i==1){
sum[i]=x[i+1]-x[i];
// cout << sum[i] << x[i+1] << x[i] << " ";
q.push({sum[i],i});
}
else if(i==n){
sum[i]=x[i]-x[i-1];
// cout << sum[i] << x[i] << x[i-1] << " ";
q.push({sum[i],i});
}
else
{
sum[i]=x[i+1]-x[i-1];
// cout << sum[i] << x[i+1] << x[i-1] << " ";
q.push({sum[i],i});
}
}
// while(!q.empty()){
// cout << q.top().first << " " << q.top().second << '\n';
// q.pop();
// }
while(!q.empty() && k>0){
while(z[q.top().second]!=0 && k>0){
if(k-z[q.top().second]>0)
{
y[q.top().second]+=z[q.top().second];
k-=z[q.top().second];
}
else{
y[q.top().second]+=k;
k=0;
}
z[q.top().second]=0;
}
q.pop();
}
for( int i=1;i<=n;i++){
if(i==1){
arie+=y[i]*(x[i+1]-x[i]);
}
else if(i==n){
arie+=y[i]*(x[i]-x[i-1]);
}
else
{
arie+=y[i]*(x[i+1]-x[i-1]);
}
}
if(arie%2==0)
cout <<arie/2 <<".0";
else cout << arie/2 << ".5";
}