Submission #1206545

#TimeUsernameProblemLanguageResultExecution timeMemory
1206545StefanSebezRotating Lines (APIO25_rotate)C++20
13 / 100
3094 ms1988 KiB
#include "rotate.h" #include <vector> #include<bits/stdc++.h> using namespace std; #define fi first #define se second #define pb push_back #define ll long long #define ld long double const int N=50000; vector<array<int,2>>a; int n; vector<int>v; int dist(int x,int y){return min(abs(x-y),N-abs(x-y));} ll Calc(){ ll res=0; for(int i=0;i<n;i++){ for(int j=i+1;j<n;j++){ res+=dist(v[i],v[j]); } } return res; } void energy(int n1, std::vector<int> v1){ v=v1;n=n1; /*for(int i=0;i<n;i++) a.pb({v[i],i}); sort(a.begin(),a.end()); for(int i=0;i<n;i++){ if(i<=(n-1)/2){ rotate({a[i][1]},a[0][0]-a[i][0]); } else{ rotate({a[i][1]},a[0][0]-a[i][0]+N); } }*/ //ll res=Calc(); for(int i=0;i<n;i++){ vector<int>x; for(int j=0;j<n;j++){ x.pb(v[j]); x.pb((v[j]+N/2)%N); } /*while(1){ v[i]=(v[i]+1)%N; ll x=Calc(); if(x<=res){ v[i]=(v[i]-1+N)%N; break; } res=x; rotate({i},1); }*/ ll maks=0,dx; for(auto X:x){ ll sum=0; for(int j=0;j<n;j++){ if(i==j) continue; sum+=dist(X,v[j]); } if(sum>=maks){ maks=sum; dx=X; } } rotate({i},dx-v[i]); v[i]=dx; } }
#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...