Submission #390805

#TimeUsernameProblemLanguageResultExecution timeMemory
390805tinjyuMeetings (IOI18_meetings)C++14
4 / 100
5519 ms83140 KiB
#include "meetings.h" #include <iostream> using namespace std; long long int point[5005][5005][2]; std::vector<long long> minimum_costs(std::vector<int> h, std::vector<int> l, std::vector<int> r) { int q = l.size(); int n = h.size(); if(n<=5000 && q<=500) { for(int i=0;i<n;i++) { int tmp=h[i]; point[i][i][1]=h[i]; for(int j=i+1;j<n;j++) { tmp=max(tmp,h[j]); point[i][j][1]=point[i][j-1][1]+tmp; } } for(int i=n-1;i>=0;i--) { int tmp=h[i]; point[i][i][0]=h[i]; for(int j=i-1;j>=0;j--) { tmp=max(tmp,h[j]); point[j][i][0]=point[j+1][i][0]+tmp; //cout<<i<<" "<<j<<" "<<point[j][i][0]<<" "; } //cout<<endl; } std::vector<long long> c(q); for(int i=0;i<q;i++) { long long int tmp=999999999999999999; for(int j=l[i];j<=r[i];j++) { if(point[l[i]][j][0]+point[j][r[i]][1]-h[j]<tmp) { c[i]=j; tmp=point[l[i]][j][0]+point[j][r[i]][1]-h[j]; //cout<<tmp<<" "<<j<<" "<<point[l[i]][j][0]<<" "<<point[j][r[i]][1]<<" "; } } c[i]=tmp; //cout<<endl; } return c; } else { std::vector<long long> c(q); for(int i=0;i<q;i++) { long long int len=0,now=0; for(int j=l[i];j<=r[i];j++) { if(h[j]==1)now++; else { len=max(len,now); now=0; } } len=max(len,now); c[i]=(r[i]-l[i]+1)*2-len; } 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...