update
This commit is contained in:
parent
02a4aabd9e
commit
27d3dd0aa3
@ -1,7 +1,12 @@
|
|||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <cstdlib>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
#include <execution>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <map>
|
||||||
|
#include <numeric>
|
||||||
|
#include <set>
|
||||||
|
|
||||||
using ll = int64_t;
|
using ll = int64_t;
|
||||||
#define nv(v)#v<<": "<<(v)<<' '
|
#define nv(v)#v<<": "<<(v)<<' '
|
||||||
@ -9,7 +14,7 @@ auto &ci = std::cin;
|
|||||||
auto &co = std::cout;
|
auto &co = std::cout;
|
||||||
|
|
||||||
const ll mxn = 1e6+5;
|
const ll mxn = 1e6+5;
|
||||||
ll *a{new ll[mxn]}, *fcts{new ll[mxn]}, *mnfct{new ll[mxn]};
|
|
||||||
auto ispm = new bool[mxn];
|
auto ispm = new bool[mxn];
|
||||||
|
|
||||||
ll lb(ll n){
|
ll lb(ll n){
|
||||||
@ -19,7 +24,9 @@ ll lb(ll n){
|
|||||||
int main(){
|
int main(){
|
||||||
ll n;
|
ll n;
|
||||||
ci>>n;
|
ci>>n;
|
||||||
|
// co<<nv(n)<<'\n';
|
||||||
ll mxa{};
|
ll mxa{};
|
||||||
|
ll *a{new ll[mxn+1]}, *mnfct{new ll[mxn+1]};
|
||||||
for(ll i{0};i<n;i++){
|
for(ll i{0};i<n;i++){
|
||||||
ci>>a[i];
|
ci>>a[i];
|
||||||
mxa = std::max(mxa, a[i]);
|
mxa = std::max(mxa, a[i]);
|
||||||
@ -40,23 +47,77 @@ int main(){
|
|||||||
|
|
||||||
// for(ll i{1};i<=mxa;i++)co<<mnfct[i]<<' ';
|
// for(ll i{1};i<=mxa;i++)co<<mnfct[i]<<' ';
|
||||||
// co<<'\n';
|
// co<<'\n';
|
||||||
|
auto srts = new ll[mxn+1];
|
||||||
|
ll ans{};
|
||||||
for(ll i{1};i<(1<<(n));i++){
|
for(ll i{1};i<(1<<(n));i++){
|
||||||
// std::fill(fcts, fcts+n, 0);
|
// std::fill(fcts, fcts+n, 0);
|
||||||
memset(fcts, 0, sizeof(ll)*mxa);
|
// memset(fcts, 0, sizeof(ll)*mxa);
|
||||||
|
auto sfs = new std::map<ll,ll>[n+1];
|
||||||
|
std::set<ll> usdfct;
|
||||||
|
// std::map<ll, ll> sfs[n+1];
|
||||||
for(ll j{0};j<n;j++){
|
for(ll j{0};j<n;j++){
|
||||||
if((1<<j)&i){
|
if((1<<j)&i){
|
||||||
ll now = a[j];
|
ll now = a[j];
|
||||||
while(now!=1){
|
while(now!=1){
|
||||||
// co<<nv(now)<<'\n';
|
// co<<nv(now)<<'\n';
|
||||||
fcts[mnfct[now]]++;
|
// fcts[mnfct[now]]++;
|
||||||
|
auto it = sfs[j].find(mnfct[now]);
|
||||||
|
auto sit = usdfct.find(mnfct[now]);
|
||||||
|
if(sit==usdfct.end()){
|
||||||
|
usdfct.insert(mnfct[now]);
|
||||||
|
}
|
||||||
|
if(it==sfs[j].end()){
|
||||||
|
// sfs->insert({mnfct[now], 1});
|
||||||
|
sfs->emplace(mnfct[now], 1);
|
||||||
|
}else{
|
||||||
|
(*it).second++;
|
||||||
|
}
|
||||||
now/=mnfct[now];
|
now/=mnfct[now];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ll ans{};
|
||||||
|
|
||||||
|
for(ll j:usdfct){
|
||||||
|
ll sum{};
|
||||||
|
ll srtn{};
|
||||||
|
co<<"getting: "<<j<<'\n';
|
||||||
|
for(ll k{0};k<n;k++){
|
||||||
|
if(auto it = sfs[k].find(j);it!=sfs[k].end()){
|
||||||
|
co<<it->first;
|
||||||
|
srts[++srtn]=0;
|
||||||
|
srts[srtn]=it->second;
|
||||||
|
// co<<nv(it->second)<<'\n';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
co<<'\n';
|
||||||
|
// for(ll k{1};k<=srtn;k++)co<<srts[k]<<' ';
|
||||||
|
// co<<'\n';
|
||||||
|
std::sort(srts+1, srts+1+srtn);
|
||||||
|
for(ll k{1};k<=srtn;k++)co<<srts[k]<<' ';
|
||||||
|
co<<'\n';
|
||||||
|
// for(ll i{1};i<=srtn;i++)sum+=srts[i];
|
||||||
|
// co<<nv(srtn)<<'\n';
|
||||||
|
ll min = std::max(1l, srtn/2+1);
|
||||||
|
// co<<nv(min)<<'\n';
|
||||||
|
if(srtn==1){
|
||||||
|
sum=srts[1];
|
||||||
|
}else{
|
||||||
|
for(ll k{1};k<=srtn;k++){
|
||||||
|
sum+=(std::abs(srts[k]-srts[min]));
|
||||||
|
co<<nv(srts[k])<<nv(srts[min])<<'\n';
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
// co<<'\n';
|
||||||
|
// co<<nv(j)<<'\n';
|
||||||
|
// co<<nv(srts[min])<<'\n';
|
||||||
|
// co<<"fct: "<<j<<'\n';
|
||||||
|
co<<nv(sum)<<'\n';
|
||||||
|
ans+=sum;
|
||||||
|
}
|
||||||
|
// co<<"---next sub\n";
|
||||||
|
}
|
||||||
|
co<<ans<<'\n';
|
||||||
// for(ll i{1};i<=mxa;i++)co<<fcts[i]<<' ';
|
// for(ll i{1};i<=mxa;i++)co<<fcts[i]<<' ';
|
||||||
// co<<'\n';
|
// co<<'\n';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user