Submission #919465

# Submission time Handle Problem Language Result Execution time Memory
919465 2024-01-31T21:49:27 Z noyancanturk Meteors (POI11_met) C++17
74 / 100
792 ms 65536 KB
#ifndef Local
    #pragma GCC optimize("O3,unroll-loops")
    const int lim=3e5+100;
#else
    const int lim=1e3+100;
#endif
    
#include "bits/stdc++.h"
using namespace std;
    
#define int int64_t
#define pb push_back
    
const int mod=1e9+7;
using pii=pair<int,int>;

int tree[lim];
struct fenwick{
    int n;
    fenwick(int n):n(n){
        for(int i=0;i<=n;i++)tree[i]=0;
    }
    void update(int p,int val){
        while(p<=n){
            tree[p]+=val;
            p+=p&-p;
        }
    }
    void update(int l,int r,int val){
        update(l,val),update(r+1,-val);
    }
    int query(int p){
        int ans=0;
        while(p){
            ans+=tree[p];
            p-=p&-p;
        }
        return ans;
    }
};

struct bs{
    signed l,r;
    int i;
};

inline void solve(){
    int n,m;
    cin>>n>>m;
    vector<signed>v[n+1];
    for(int i=1;i<=m;i++){
        int tem;
        cin>>tem;
        v[tem].pb(i);
    }
    int goal[n+1];
    for(int i=1;i<=n;i++){
        cin>>goal[i];
    }
    int k;
    cin>>k;
    bs all[k+1];
    for(int i=1;i<=k;i++){
        cin>>all[i].l>>all[i].r>>all[i].i;
    }
    vector<int>qq[k+1];
    for(int i=1;i<=n;i++){
        qq[(1+k)>>1].pb(i);
    }
    signed l[k+1],r[k+1];
    l[(1+k)>>1]=1,r[(1+k)>>1]=k;
    signed ans[n+1];
    memset(ans,-1,sizeof(ans));
    bool ok=1;
    while(ok){
        ok=0;
        fenwick st(m+10);
        for(int t=1;t<=k;t++){
            if(all[t].l<=all[t].r)st.update(all[t].l,all[t].r,all[t].i);
            else {
                st.update(all[t].l,m,all[t].i);
                st.update(1,all[t].r,all[t].i);
            }
            while(qq[t].size()){
                int now=qq[t].back();
                qq[t].pop_back();
                //cerr<<now.l<<" "<<now.r<<" "<<now.i<<"\n\n";
                int tot=0;
                for(int j:v[now]){
                    tot+=st.query(j);
                    if(goal[now]<=tot)break;
                }
                //cerr<<mid<<" "<<tot<<"\n\n";
                int mid=(l[t]+r[t])>>1;
                if(goal[now]<=tot){
                    ans[now]=mid;
                    if(l[t]<=mid-1){
                        qq[(l[t]+mid-1)>>1].pb(now);
                        l[(l[t]+mid-1)>>1]=l[t];
                        r[(l[t]+mid-1)>>1]=mid-1;
                        ok=1;
                    }
                }else{
                    if(mid+1<=r[t]){
                        qq[(mid+1+r[t])>>1].pb(now);
                        l[(mid+1+r[t])>>1]=mid+1;
                        r[(mid+1+r[t])>>1]=r[t];
                        ok=1;
                    }
                }
            }
        }
    }
    for(int i=1;i<=n;i++){
        if(ans[i]==-1)cout<<"NIE\n";
        else cout<<ans[i]<<"\n";
    }
}
    
signed main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
#ifdef Local  
    freopen(".in","r",stdin);
    freopen(".out","w",stdout);
#else

#endif
    int t=1;
    //cin>>t;
    while (t--)
    {
        solve();
    }
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 1 ms 600 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 41 ms 6232 KB Output is correct
2 Correct 74 ms 9856 KB Output is correct
3 Correct 72 ms 8524 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 69 ms 7820 KB Output is correct
2 Correct 67 ms 7760 KB Output is correct
3 Correct 80 ms 10100 KB Output is correct
4 Correct 22 ms 5720 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 56 ms 6480 KB Output is correct
2 Correct 62 ms 10468 KB Output is correct
3 Correct 29 ms 2904 KB Output is correct
4 Correct 64 ms 9168 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 58 ms 5400 KB Output is correct
2 Correct 70 ms 7764 KB Output is correct
3 Correct 45 ms 5720 KB Output is correct
4 Correct 81 ms 11340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 526 ms 40408 KB Output is correct
2 Correct 548 ms 18204 KB Output is correct
3 Correct 155 ms 14672 KB Output is correct
4 Runtime error 792 ms 65536 KB Execution killed with signal 9
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 627 ms 37928 KB Output is correct
2 Correct 734 ms 18392 KB Output is correct
3 Correct 145 ms 13344 KB Output is correct
4 Runtime error 747 ms 65536 KB Execution killed with signal 9
5 Halted 0 ms 0 KB -