제출 #1183326

#제출 시각아이디문제언어결과실행 시간메모리
1183326nguyenkhangninh99새로운 문제 (POI11_met)C++20
0 / 100
6094 ms131072 KiB
#include<bits/stdc++.h> using namespace std; #define int unsigned long long const int maxn = 5e5 + 5; int a[maxn], res[maxn], bit[maxn], ev[maxn][3]; vector<int> water, value[maxn]; void up(int x, int v){ for (; x < maxn; x += x & -x) bit[x] += v; } int get(int x){ int s = 0; for (; x > 0; x -= x & -x) s += bit[x]; return s; } void add(int i, int v){ if(ev[i][0] <= ev[i][1]){ up(ev[i][0], (ev[i][2] * v)); up(ev[i][1] + 1, -(ev[i][2] * v)); } else{ up(1, (ev[i][2] * v)); up(ev[i][1] + 1, -(ev[i][2] * v)); up(ev[i][0], (ev[i][2] * v)); } } int f(int x){ int ans = 0; for(int id: value[x]){ ans += get(id); } return ans; } void calc(int l, int r, vector<int>& cur){ if(l > r || cur.empty()) return; cout << l << " " << r << "\n"; int mid = (l + r) / 2; for(int i = l; i <= mid; i++) add(i, 1); vector<int> le, ri; for(int x: cur){ int sum = f(x); if (sum >= a[x]){ le.push_back(x); res[x] = mid; }else{ ri.push_back(x); a[x] -= sum; } } for (int i = l; i <= mid; i++) add(i, -1); calc(l, mid, le); calc(mid + 1, r, ri); } signed main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n, m; cin >> n >> m; for(int i = 1; i <= m; i++){ int x; cin >> x; value[x].push_back(i); } for(int i = 1; i <= n; i++){ cin >> a[i]; res[i] = -1; water.push_back(i); } int q; cin >> q; for(int i = 1; i <= q; i++) cin >> ev[i][0] >> ev[i][1] >> ev[i][2]; calc(1, q, water); for(int i = 1; i <= n; i++){ if(res[i] == -1) cout << "NIE\n"; else cout << res[i] << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...