Pagini recente »
Cod sursă (job #733027)
|
Clasament laborator10d06nov
|
Atașamentele paginii Clasament 2020-03-14-clasa-5-tema-32
|
Istoria paginii runda/2019-10-17-clasa-7-tema-6-optionala
|
Cod sursă (job #785441)
Cod sursă (job
#785441)
#include <bits/stdc++.h>
using namespace std;
#define MAXN 200000
int v[MAXN+1],aux[MAXN+1];
vector<pair<int,int>> p[MAXN+1];
priority_queue<pair<int,int>> q;
int main() {
FILE *fin,*fout;
int n,m,l,r,k,nrsol,i;
char ok;
pair<int,int> vf;
fin=fopen("stampile.in","r");
fscanf(fin,"%d%d",&n,&m);
for(i=0; i<n; i++) {
fscanf(fin,"%d",&v[i]);
}
for(i=0; i<m; i++) {
fscanf(fin,"%d%d%d",&l,&r,&k);
p[l-1].push_back({r-1,k});
}
nrsol=0;
ok=1;
fout=fopen("stampile.out","w");
i=0;
while(i<n&&ok) {
for(pair<int, int>g:p[i]) {
q.push(g);
}
v[i]-=aux[i];
while(v[i]>0&&!q.empty()) {
vf=q.top();
q.pop();
if(i<=vf.first) {
if(vf.second<=v[i]) {
v[i]-=vf.second;
aux[i]+=vf.second;
aux[vf.first+1]-=vf.second;
nrsol+=vf.second;
} else {
vf.second-=v[i];
aux[i]+=v[i];
aux[vf.first+1]-=v[i];
nrsol+=v[i];
v[i]=0;
q.push(vf);
}
}
}
aux[i+1]+=aux[i];
if(q.empty()&&v[i]>0) {
ok=0;
}
i++;
}
if(ok==1) {
fprintf(fout,"%d",nrsol);
} else {
fprintf(fout,"-1");
}
fclose(fout);
return 0;
}