Submission #1148428

#TimeUsernameProblemLanguageResultExecution timeMemory
1148428adlinMeteors (POI11_met)C++20
24 / 100
6095 ms7748 KiB
#include <bits/stdc++.h> #define pb push_back #define F first #define S second #define all(v) v.begin(),v.end() using namespace std; typedef long long ll; const int maxn = 3e5 + 5; int n,m,k,a[maxn],p[maxn]; int leftt[maxn],rightt[maxn],val[maxn]; ll b[maxn]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> m; for(int i = 1; i <= m; i++) cin >> a[i]; for(int i = 1; i <= n; i++) { cin >> p[i]; } cin >> k; for(int i = 1; i <= k; i++){ cin >> leftt[i] >> rightt[i] >> val[i]; } for(int i = 1; i <= n; i++){ int l = 1, r = k; int ind = 0; while(l <= r){ int md = (l + r) >> 1; for(int j = 1; j <= m; j++) b[j] = 0; for(int j = 1; j <= md; j++){ if(leftt[j] > rightt[j]){ b[leftt[j]] += val[j]; b[1] += val[j]; b[rightt[j] + 1] -= val[j]; } else { b[leftt[j]] += val[j]; b[rightt[j] + 1] -= val[j]; } } ll sum = 0; for(int j = 1; j <= m; j++){ b[j] += b[j - 1]; if(a[j] == i) sum += b[j]; } if(sum >= p[i]){ ind = md; r = md - 1; } else { l = md + 1; } } if(ind) cout << ind << '\n'; else cout << "NIE\n"; } return 0; }
#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...