记录编号 |
38370 |
评测结果 |
AAAAATAATT |
题目名称 |
矩阵 |
最终得分 |
70 |
用户昵称 |
QhelDIV |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
3.515 s |
提交时间 |
2012-04-17 21:49:50 |
内存使用 |
7.99 MiB |
显示代码纯文本
#include <stdio.h>
#include <map>
#include <set>
using namespace std;
int Map[1002][1002],Ans[1002][1002],n,m;
map <int,int> Temp;
set <int> Set[1002];
void Ad_Hoc()
{
int i,j,Tkmp,Tdp;
for(i=1;i<=m;i++)
{
Tkmp=0;
for(j=1;j<=n;j++)
{
Tdp=Temp[Map[i][j]];
if(Tdp>j)
{
Set[j].insert(Map[i][j]);
Set[Tdp].erase(Map[i][j]);
}
if(Tdp==0)
Set[j].insert(Map[i][j]);
if(Tdp!=0)
Tdp=min(Tdp,j);
else
Tdp=j;
Tkmp+=Set[j].size();
Temp[Map[i][j]]=Tdp;
Ans[i][j]=Tkmp;
}
}
for(i=1;i<=m;i++)
{
for(j=1;j<n;j++)
printf("%d ",Ans[i][j]);
printf("%d\n",Ans[i][n]);
}
}
int main()
{
freopen("matrixa.in","r",stdin);
freopen("matrixa.out","w",stdout);
int i,j;
while(scanf("%d%d",&m,&n)==2)
{
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
{
scanf("%d",&Map[i][j]);
if(Map[i][j]==0)
Map[i][j]=~0u>>1;
}
Ad_Hoc();
for(i=1;i<=n;i++)
Set[i].clear();
Temp.clear();
}
fclose(stdout);
fclose(stdin);
return 0;
}