| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1368613 | m0rtu_us0512 | Snacks (NOI25_snacks) | C++20 | 0 ms | 0 KiB |
#include<bits/stdc++.h>
using namespace std;
int64_t N, Q;
map<int64_t, int64_t> A;
deque< tuple <int64_t, int64_t, int64_t> > query;
int64_t sum = 0;
int main(){
cin >> N >> Q;
query.assign( Q , {0,0,0} );
for( auto n=N ; n-- > 0 ; ){
int64_4 a ;
cin >> a;
A[a] ++ ;
}
for( auto &[l,r,x] : query ){
cin >> l >> r >> x;
}
int64_t sum = 0 ;
for( auto &[k,v] : A ){
sum += k*v;
}
cout << sum << endl;
while( query.size() ){
auto [l,r,x] = query[0] ;
query.pop_front();
int64_t replaced = 0;
// iterator
auto it = A.lower_bound(l);
for( ; it!=A.end() ; ){
auto [k,v] = *it ;
if( r < k )
break;
sum -= k*v;
it = A.erase(it);
}
if( replaced ){
A[x] = replaced;
sum += x*replaced;
}
cout << sum << endl;
}
return 0;
}
