Submission #1149110

#TimeUsernameProblemLanguageResultExecution timeMemory
1149110kitkat12Circus (Balkan15_CIRCUS)C++20
49 / 100
4056 ms526888 KiB
#include <bits/stdc++.h> #include "circus.h" using namespace std; typedef long long ll; typedef pair<int,int> pii; #define mp make_pair #define pb push_back #define F first #define S second #define debug(x) std::cout << #x << ": " << x << "\n" #define all(v) v.begin(), v.end() #define li(i,a,b) for (int (i) = (a); (i) < (b); (i)++) #define endl '\n' #define mem(name,val) memset(name,val,sizeof(name)) #define min(a,b) (a<=b ? a : b) #define max(a,b) (a>=b ? a : b) //using u64 = uint64_t; //using u128 = __uint128_t; const int nmax = 2003; vector<int> p,d; int n,m; void init(int N, int M, int P[]){ n = N; m = M; sort(P,P+N); li(i,0,n)p.pb(P[i]); //dijks d.assign(n,0); li(i,0,n)d[i]=m-p[i]; priority_queue<pii, vector<pii>, greater<pii>>pq; li(i,0,n)pq.push({d[i],i}); while(!pq.empty()){ auto [d_v,v] = pq.top(); pq.pop(); if(d_v>d[v])continue; int lb = (int)(lower_bound(all(p),d_v+p[v])-p.begin()); int up = (int)(upper_bound(all(p),p[v]-d_v)-p.begin()); li(i,0,up){ if(i==v)continue; int dist = abs(p[i]-p[v]); if(d[i] > dist){ d[i]=dist; pq.push({dist,i}); } } li(i,lb,n){ if(i==v)continue; int dist = abs(p[i]-p[v]); if(d[i] > dist){ d[i]=dist; pq.push({dist,i}); } } } } int minLength(int D){ int res = m-D; li(i,0,n){ if(abs(p[i]-D) >= d[i]){ res = min(res, abs(p[i]-D)); } } return res; }

Compilation message (stderr)

grader.cpp: In function 'int main()':
grader.cpp:16:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 |         scanf("%d%d", &N, &M);
      |         ~~~~~^~~~~~~~~~~~~~~~
grader.cpp:18:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   18 |                 scanf("%d", &P[i]);
      |                 ~~~~~^~~~~~~~~~~~~
grader.cpp:21:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   21 |         scanf("%d", &Q);
      |         ~~~~~^~~~~~~~~~
grader.cpp:23:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   23 |                 scanf("%d", &d);
      |                 ~~~~~^~~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...