제출 #1206539

#제출 시각아이디문제언어결과실행 시간메모리
1206539StefanSebezRotating Lines (APIO25_rotate)C++20
13 / 100
3094 ms1428 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;
ll Calc(){
	ll res=0;
	for(int i=0;i<n;i++){
		for(int j=i+1;j<n;j++){
			res+=min(abs(v[i]-v[j]),N-abs(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++){
		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);
		}
	}
}
#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...