Submission #548287

#TimeUsernameProblemLanguageResultExecution timeMemory
5482872fat2codeMeteors (POI11_met)C++17
24 / 100
6082 ms20720 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define all(a) (a).begin(), (a).end()
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")
#define fr first
#define sc second
#define int long long
#define rc(s) return cout<<s,0
#define rcc(s) cout<<s,exit(0)

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

const int nmax = 600005;


int n, m, a[nmax], k, p[nmax], x[nmax], y[nmax], z[nmax];

int tz[nmax];


void add(int l, int r, int val){
    tz[l] += val;
    tz[r + 1] -= val;
}

int32_t main(){
    //ios_base::sync_with_stdio(false);cin.tie(0);cerr.tie(0);cout.tie(0);
    //freopen("input.in", "r", stdin);
    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 >> x[i] >> y[i] >> z[i];
    }
    vector<int>ans;
    for(int i=1;i<=n;i++){
        int l = 1, r = k, ok = 0;
        while(l <= r){
            int mid = l + (r - l) / 2;
            for(int j=1;j<=mid;j++){
                if(x[j] > y[j]){
                    add(x[j], m, z[j]);
                    add(1, y[j], z[j]);
                }
                else{
                    add(x[j], y[j], z[j]);
                }
            }
            int curr = 0, strans = 0;
            for(int j=1;j<=m;j++){
                curr += tz[j];
                if(a[j] == i){
                    strans += curr;
                }
            }
            for(int j=1;j<=m+1;j++) tz[j] = 0;
            if(strans >= p[i]){
                ok = mid;
                r = mid - 1;
            }
            else{
                l = mid + 1;
            }
        }
        ans.push_back(ok);
    }
    for(auto it : ans){
        if(!it) cout << "NIE" << '\n';
        else{
            cout << it << '\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...