제출 #1054832

#제출 시각아이디문제언어결과실행 시간메모리
1054832Ahmed57모임들 (IOI18_meetings)C++17
0 / 100
2 ms4696 KiB
#include "bits/stdc++.h" using namespace std; #define int long long int arr[100001]; pair<int,int> seg[400001]; int n ,q; void build(int p,int l,int r){ if(l==r){ seg[p] = {arr[l],l}; return ; } int md = (l+r)/2; build(p*2,l,md); build(p*2+1,md+1,r); seg[p] = max(seg[p*2],seg[p*2+1]); } pair<int,int> query(int p,int l,int r,int lq,int rq){ if(l>=lq&&r<=rq)return seg[p]; if(r<lq||l>rq)return {0,0}; int md = (l+r)/2; return max(query(p*2,l,md,lq,rq),query(p*2+1,md+1,r,lq,rq)); } map<pair<int,int>,int> dp; vector<int> val[21]; int solve(int l,int r){ if(l>r)return 0; if(dp.find(make_pair(l,r))!=dp.end())return dp[{l,r}]; int ind = query(1,0,n-1,l,r).first; int it = lower_bound(val[arr[ind]].begin(),val[arr[ind]].end(),l)-val[arr[ind]].begin(); int it2 = it; while(it2<val[arr[ind]].size()&&val[arr[ind]][it2]<=r)it2++; it2--; int ma = 1e18; {//l ma = min(ma,solve(l,val[arr[ind]][it]-1)+((r-l+1)-(val[arr[ind]][it]-l))*arr[ind]); } {//r ma = min(ma,solve(val[arr[ind]][it2]+1,r)+((r-l+1)-(r-val[arr[ind]][it2]))*arr[ind]); } for(int i = it;i<it2;i++){ ma = min(ma,solve(val[arr[ind]][i]+1,val[arr[ind]][i+1]-1)+((r-l+1)-(val[arr[ind]][i+1]-val[arr[ind]][i]-1))*arr[ind]); } return dp[{l,r}] = ma; } vector<long long> minimum_costs(vector<int32_t> H, vector<int32_t> L, vector<int32_t> R){ n = H.size(); q = L.size(); for(int i = 0;i<n;i++){ arr[i] = H[i]; val[arr[i]].push_back(i); } build(1,0,n-1); vector<long long> an; for(int i = 0;i<q;i++){ an.push_back(solve(L[i],R[i])); } return an; }

컴파일 시 표준 에러 (stderr) 메시지

meetings.cpp: In function 'long long int solve(long long int, long long int)':
meetings.cpp:32:14: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   32 |     while(it2<val[arr[ind]].size()&&val[arr[ind]][it2]<=r)it2++;
      |           ~~~^~~~~~~~~~~~~~~~~~~~~
#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...