제출 #1234703

#제출 시각아이디문제언어결과실행 시간메모리
1234703HanksburgerRotating Lines (APIO25_rotate)C++20
16 / 100
54 ms4208 KiB
#include "rotate.h" #include <bits/stdc++.h> using namespace std; int cur[100005], target[100005], indx[100005], placed[100005], n; vector<pair<int, int> > b, c; void solve(int i) { placed[i]=1; if (cur[i]==target[i]) return; if (cur[i]>target[i]) { vector<int> tmp; tmp.push_back(indx[i]); rotate(tmp, (target[i]-cur[i]+50000)%50000); return; } if (i<n/2*2-1 && cur[i+1]<target[i]) solve(i+1); vector<int> tmp; tmp.push_back(indx[i]); rotate(tmp, (target[i]-cur[i]+50000)%50000); } void energy(int N, vector<int> a) { int n=N, ind; for (int i=0; i<n; i++) b.push_back({a[i], i}); sort(b.begin(), b.end()); for (int i=0; i<n; i++) { if ((b[(i+n/2)%n].first-b[i].first+50000)%50000<=25000) { ind=i; break; } } for (int i=ind; i<ind+n; i++) c.push_back({(b[i%n].first-b[ind].first+50000)%50000, b[i%n].second}); if (n&1) { vector<int> tmp; tmp.push_back(c[n-1].second); rotate(tmp, (c[0].first-c[n-1].first+50000)%50000); } for (int i=0; i<n/2; i++) { cur[i]=c[i+n/2].first; target[i]=(c[i].first+25000)%50000; indx[i]=c[i+n/2].second; } for (int i=0; i<n/2; i++) if (!placed[i]) solve(i); }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...