제출 #109740

#제출 시각아이디문제언어결과실행 시간메모리
109740amiratouMeetings (IOI18_meetings)C++14
0 / 100
24 ms1688 KiB
#include "meetings.h" #include <bits/stdc++.h> using namespace std; int cl_r[100005],cl_l[100005]; vector<long long> minimum_costs(vector<int> H, vector<int> L,vector<int> R) { int last=-1; for (int i = H.size()-1; i >= 0; --i) { if(H[i]==1&&(i==(int)(H.size()-1)||H[i+1]==2)) last=i; //if(last==-1)cl_l if(H[i]==2)cl_r[i]=-1; else cl_r[i]=last; } /*for (int i = 0; i < H.size(); ++i) { cout<<cl_r[i]<<" "; }*/ //cout<<"\n"; last=-1; for (int i = 0; i < (int)H.size(); ++i) { if(H[i]==1&&(i==0||H[i-1]==2)) last=i; if(H[i]==2)cl_l[i]=-1; else cl_l[i]=last; //cout<<cl_l[i]<<" "; } //cout<<"\n"; int Q = L.size(); vector<long long> C(Q); for (int i = 0; i < Q; ++i) { //C[i]=min(cl_r) C[i]=(int)(1e9); if(H[R[i]]==2&&H[L[i]]==2){C[i]=min(C[i],2LL*(R[i]-L[i]+1));continue;} if(cl_r[L[i]]!=-1&&cl_r[L[i]]<=R[i]) C[i]=min(C[i],cl_r[L[i]]-L[i]+1LL+(2LL*(R[i]-cl_r[L[i]]))); if(cl_l[R[i]]!=-1&&cl_l[R[i]]>=L[i]) C[i]=min(C[i],R[i]-cl_l[R[i]]+1LL+(2LL*(cl_l[R[i]]-L[i]))); } return C; }
#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...