Submission #1315895

#TimeUsernameProblemLanguageResultExecution timeMemory
1315895WH8Room Temperature (JOI24_ho_t1)C++17
100 / 100
226 ms12588 KiB
#include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; #include <bits/stdc++.h> using namespace std; #define int long long #define pll pair<long long, long long> #define mp make_pair #define pb push_back #define f first #define s second #define endl '\n' #define ld long double #define sz(x) static_cast<int>((x).size()) #define i5 tuple<int,int,int,int,int> #define all(x) x.begin(), x.end() #define iiii tuple<int, int,int,int> #define ld long double #define lol pair<pll,pll> #define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update> signed main(){ int n,t;cin>>n>>t; vector<int> a(n, 0), v; map<int,int> grad; int y=0, ans=1e18, cg=0; for(int i=0;i<n;i++){ cin>>a[i]; a[i]%=t; v.pb(a[i]); v.pb(a[i] + t); } sort(all(v)); int lp=0;//, cost=0; for(int i=0;i<n;i++){ ans=min(ans, (v[i+n-1]-v[i])/2 + ((v[i+n-1]-v[i]) % 2)); } cout<<ans; return 0; //for(int i=0;i<n;i++)cost+=v[i]-v[0]; for(int i=0;i<2*n;i++){ while(lp < min(i,n) and v[lp+n] - v[i] < v[i] - v[lp]){ //cost -= v[i]-v[lp]; //cost += v[lp+n]-v[i]; lp++; } int cand=max(v[i]-v[lp], v[lp+n-1]-v[i]); ans=min(ans, cand); printf("i %lld, lp %lld, rp %lld, cand %lld\n", i, lp, lp+n, cand); /* ans=min(ans, cost); if(i != 2*n)cost += (2*i+2-2*lp-n) * (v[i+1]-v[i]); printf("cost after is %lld\n", cost);*/ } cout<<ans; /*for(int i=0;i<n;i++){ a[i]%=t; y += min(a[i], T-a[i]); cg= grad[a[i]]+=2; if(t % 2 == 0){ grad[(a[i]+t/2)%t]-=2; } else { grad[(a[i]+t/2)%t]-=1; grad[(a[i]+t/2+1)%t]-=1; } }*/ }
#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...