| 记录编号 |
613502 |
评测结果 |
AAAAAAAAAA |
| 题目名称 |
[Nescafé 18] 七夕祭 |
最终得分 |
100 |
| 用户昵称 |
2_16鸡扒拌面 |
是否通过 |
通过 |
| 代码语言 |
C++ |
运行时间 |
0.413 s |
| 提交时间 |
2026-03-14 19:17:58 |
内存使用 |
5.37 MiB |
显示代码纯文本
#include<bits/stdc++.h>
#define MAXN 100010
#define ll long long
using namespace std;
ll n1,m,t;
ll r[MAXN],c[MAXN],s[MAXN];
ll calc(ll n,ll a[],ll ta)
{
for(int i=1;i<=n;++i) s[i]=s[i-1]+(a[i]-ta);
sort(s+1,s+n+1);
ll mid=s[(n+1)/2];
ll ans=0;
for(int i=1;i<=n;++i) ans+=abs(s[i]-mid);
return ans;
}
int main()
{
freopen("tanabata.in","r",stdin);
freopen("tanabata.out","w",stdout);
cin>>n1>>m>>t;
memset(r,0,sizeof(r));
memset(c,0,sizeof(c));
for(int i=1;i<=t;++i)
{
int x,y;
cin>>x>>y;
r[x]++; c[y]++;
}
bool okr=!(t%n1),okc=!(t%m);
if(okr&&okc)
{
ll rans=calc(n1,r,t/n1);
ll cans=calc(m,c,t/m);
cout<<"both "<<rans+cans<<endl;
}
else if(okr)
{
ll rans=calc(n1,r,t/n1);
cout<<"row "<<rans<<endl;
}
else if(okc)
{
ll cans=calc(m,c,t/m);
cout<<"column "<<cans<<endl;
}
else cout<<"impossible"<<endl;
return 0;
}