AcWing 105. 七夕祭
原题链接
中等
作者:
fanjunyi9
,
2020-08-28 11:42:09
,
所有人可见
,
阅读 590
算法1
(进阶指南+类似均分纸牌+中位数优化) $O(NlogN+MlogM)$
#include<bits/stdc++.h>
using namespace std;
const int N=100010;
int n,m,t,x,y;
int a[N],b[N],s[N];
long long cal(int a[],int n,int ave)
{
long long ans=0;
memset(s,0,sizeof s);
for(int i=1;i<=n;i++) a[i]-=ave,s[i]=s[i-1]+a[i];;
sort(s+1,s+1+n);
for(int i=1;i<=n;i++) ans+=abs(s[i]-s[(1+n)/2]);
return ans;
}
int main()
{
cin>>n>>m>>t;
for(int i=1;i<=t;i++)
{
cin>>x>>y;
a[x]++,b[y]++;
}
if(t%n)
{
if(t%m) {puts("impossible");return 0;}
else cout<<"column "<<cal(b,m,t/m)<<endl;
}
else
{
if(t%m) cout<<"row "<<cal(a,n,t/n)<<endl;
else cout<<"both "<<cal(b,m,t/m)+cal(a,n,t/n)<<endl;
}
}