제출 #480284

#제출 시각아이디문제언어결과실행 시간메모리
480284FEDIKUS새로운 문제 (POI11_met)C++17
74 / 100
1260 ms65540 KiB
#include <bits/stdc++.h> #define mp make_pair #define pb push_back #define pf push_front #define popb pop_back #define popf pop_front #define xx first #define yy second #define ff(i,s,f) for(ll i=s;i<f;i++) #define fb(i,s,f) for(ll i=(s)-1;i>=f;i--) #define ffi(i,s,f) for(ll i=s;i<=f;i++) #define fbi(i,s,f) for(ll i=s;i>=f;i--) #define srt(a) sort(a.begin(),a.end()); #define srtg(a,ll) sort(a.begin(),a.end(),greater<ll>()) #define lb(a,x) lower_bound(a.begin(),a.end(),x) #define ub(a,x) upper_bound(a.begin(),a.end(),x) #define fnd(a,x) find(a.begin(),a.end(),x) #define vstart auto startt=chrono::system_clock::now() #define vend auto endd=chrono::system_clock::now() #define vvreme chrono::duration<double> vremee=endd-startt #define ios ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0) using namespace std; typedef long long ll; typedef pair<ll,ll> pii; typedef pair<ll,ll> pll; typedef string str; const ll maxn=3e5+10; vector<ll> s[maxn],buckets[maxn]; ll p[maxn],res[maxn],l[maxn],r[maxn],bit[maxn]; pair<pii,ll> ev[maxn]; ll n,m; void add(ll x,ll k){ for(;x<=m;x+=x&-x) bit[x]+=k; } ll query(ll x){ ll ret=0; for(;x>0;x-=x&-x) ret+=bit[x]; return ret; } void solve(){ cin>>n>>m; ffi(i,1,m){ ll a; cin>>a; s[a].pb(i); } ffi(i,1,n) cin>>p[i]; ll k; cin>>k; ffi(i,1,k) cin>>ev[i].xx.xx>>ev[i].xx.yy>>ev[i].yy; ffi(i,1,n){ l[i]=1; r[i]=k; res[i]=-1; } bool change=true; while(true){ change=false; ffi(i,1,k) buckets[i].clear(); ffi(i,1,n){ if(l[i]<=r[i]){ change=true; buckets[(l[i]+r[i])/2].pb(i); } } if(!change) break; fill(bit,bit+maxn,0); ffi(i,1,k){ if(ev[i].xx.xx<=ev[i].xx.yy){ add(ev[i].xx.xx,ev[i].yy); add(ev[i].xx.yy+1,-ev[i].yy); }else{ add(1,ev[i].yy); add(ev[i].xx.yy+1,-ev[i].yy); add(ev[i].xx.xx,ev[i].yy); } for(ll j:buckets[i]){ ll tren=0; for(ll t:s[j]){ tren+=query(t); if(tren>=p[j]) break; } if(tren>=p[j]){ res[j]=i; r[j]=i-1; }else l[j]=i+1; } } } ffi(i,1,n) if(res[i]!=-1) cout<<res[i]<<"\n"; else cout<<"NIE\n"; } int main(){ ios; ll t=1; //cin>>t; while(t--) solve(); 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...