제출 #1171682

#제출 시각아이디문제언어결과실행 시간메모리
1171682PedroBigManBodyguard (JOI21_bodyguard)C++20
0 / 100
1 ms580 KiB
/* Author of all code: Pedro BIGMAN Dias Last edit: 15/02/2021 */ #include <iostream> #include <vector> #include <cmath> #include <algorithm> #include <string> #include <map> #include <unordered_map> #include <set> #include <unordered_set> #include <queue> #include <deque> #include <list> #include <iomanip> #include <stdlib.h> #include <time.h> #include <cstring> using namespace std; typedef long long int ll; typedef unsigned long long int ull; typedef long double ld; #define REP(i,a,b) for(ll i=(ll) a; i<(ll) b; i++) #define pb push_back #define mp make_pair #define pl pair<ll,ll> #define ff first #define ss second #define whole(x) x.begin(),x.end() #define DEBUG(i) cout<<"Pedro Is The Master "<<i<<endl #define INF 2000000000000000000LL #define EPS 0.00000001 #define pi 3.14159 ll mod=1000000007LL; template<class A=ll> void Out(vector<A> a) {REP(i,0,a.size()) {cout<<a[i]<<" ";} cout<<endl;} template<class A=ll> void In(vector<A> &a, ll N) {A cur; REP(i,0,N) {cin>>cur; a.pb(cur);}} int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); ll N,Q; cin>>N>>Q; ll L = 10LL; ll T = 12LL; vector<ll> dp; REP(i,0,L) {dp.pb(0LL);} vector<ll> newdp; REP(i,0,L) {newdp.pb(0LL);} vector<vector<ll> > olddp; olddp.pb(dp); vector<pl> pro; REP(i,0,L) {pro.pb({0LL,0LL});} vector<ll> loc; REP(i,0,N) {loc.pb(-1LL);} vector<ll> A,B,st,C; REP(i,0,N) {A.pb(-1LL); B.pb(-1LL); st.pb(-1LL); C.pb(-1LL);} REP(i,0,N) { cin>>st[i]>>A[i]>>B[i]>>C[i]; st[i]*=2LL; A[i]*=2LL; B[i]*=2LL; C[i]/=2LL; } REP(t,1,T) { REP(i,0,L) { newdp[i]=dp[i]; if(i>0) {newdp[i]=max(newdp[i],dp[i-1]+pro[i-1].ss);} if(i<L-1) {newdp[i]=max(newdp[i],dp[i+1]+pro[i+1].ff);} } REP(i,0,L) {dp[i]=newdp[i];} REP(i,0,L) {pro[i]={0,0};} REP(i,0,N) { if(t<st[i] || t>st[i]+abs(B[i]-A[i])) {continue;} if(t==st[i]) {loc[i]=A[i]; continue;} if(t==st[i]+abs(B[i]-A[i])) {loc[i]=-1LL; continue;} if(A[i]>B[i]) {loc[i]--;} else {loc[i]++;} } REP(i,0,N) { if(loc[i]==-1LL) {continue;} if(A[i]>B[i]) {pro[loc[i]].ff=max(pro[loc[i]].ff,C[i]);} if(A[i]<B[i]) {pro[loc[i]].ss=max(pro[loc[i]].ss,C[i]);} } olddp.pb(dp); } REP(i,0,T) {Out(olddp[i]);} 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...