Submission #106856

#TimeUsernameProblemLanguageResultExecution timeMemory
106856someone_aaWatching (JOI13_watching)C++17
50 / 100
1060 ms16896 KiB
#include <bits/stdc++.h> #define ll long long #define pb push_back #define mp make_pair using namespace std; const int maxn = 2100; int n, p, q; set<int>st; vector<int>v; int dp[maxn][maxn]; bool check(ll x) { for(int i=0;i<=v.size();i++) { for(int j=0;j<=v.size();j++) { dp[i][j] = 10000000; } } dp[0][0] = 0; int result = INT_MAX; for(int i=1;i<=v.size();i++) { //cout<<i<<":\n"; for(int j=0;j<=q;j++) { int lst = 0, lst2=0; for(int d=1;d<=i;d++) { if(lst == 0 && v[i-1] - v[d-1] < x) lst = d; if(lst2 == 0 && v[i-1] - v[d-1] < 2*x) lst2 = d; } if(v[i-1] - v[lst-1] < x) { dp[i][j] = min(dp[i][j], dp[lst-1][j]+1); if(j-1>=0) { dp[i][j] = min(dp[i][j], dp[lst-1][j-1]); } } if(v[i-1] - v[lst2-1] < 2*x && j>=1) { dp[i][j] = min(dp[i][j], dp[lst2-1][j-1]); } //cout<<j<<": "<<dp[i][j]<<"\n"; if(i == v.size()) { result = min(result, dp[i][j]); } } } return result <= p; } int main() { cin>>n>>p>>q; int x; for(int i=1;i<=n;i++) { cin>>x; st.insert(x); } for(int i:st) { v.pb(i); } q = min(q, int(v.size())); ll l = 0LL, r = 1LL * 1e9; ll result = LLONG_MAX; while(l < r) { ll mid = (l + r) / 2; if(check(mid)) { result = min(result, mid); r = mid; } else { l = mid + 1; } } cout<<result<<"\n"; return 0; }

Compilation message (stderr)

watching.cpp: In function 'bool check(long long int)':
watching.cpp:13:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<=v.size();i++) {
                 ~^~~~~~~~~~
watching.cpp:14:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int j=0;j<=v.size();j++) {
                     ~^~~~~~~~~~
watching.cpp:21:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=1;i<=v.size();i++) {
                 ~^~~~~~~~~~
watching.cpp:44:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             if(i == v.size()) {
                ~~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...