比赛 |
防止浮躁的小练习v0.2 |
评测结果 |
AAAAAAAAAA |
题目名称 |
最长滑坡 |
最终得分 |
100 |
用户昵称 |
KZNS |
运行时间 |
0.318 s |
代码语言 |
C++ |
内存使用 |
4.96 MiB |
提交时间 |
2016-10-08 09:57:39 |
显示代码纯文本
// KZ's
#include <fstream>
#include <algorithm>
#include <iostream>
using namespace std;
class poi {
public:
int x,y,h;
void push(int a,int b,int c) {
x=a;
y=b;
h=c;
}
void pop(int &a,int &b,int &c) {
a=x;
b=y;
c=h;
}
}ls[250000];
bool cmppoi(poi a,poi b) {
return a.h<b.h;
}
int main() {
ifstream fin ("shunzhi.in");
ofstream fout ("shunzhi.out");
int mp[500][500]={0},r,c,u=0;
fin>>r>>c;
for (int i=0;i<r;i++)
for (int j=0;j<c;j++) {
fin>>mp[i][j];
ls[u++].push(i,j,mp[i][j]);
}
sort(ls,ls+u,cmppoi);
int x,y,h,ed[500][500]={0},mxed=0;
for (int i=0;i<u;i++) {
ls[i].pop(x,y,h);
int &edu=ed[x][y];
if (x>0&&mp[x-1][y]<h&&ed[x-1][y]>edu)
edu=ed[x-1][y];
if (x+1<r&&mp[x+1][y]<h&&ed[x+1][y]>edu)
edu=ed[x+1][y];
if (y>0&&mp[x][y-1]<h&&ed[x][y-1]>edu)
edu=ed[x][y-1];
if (y+1<c&&mp[x][y+1]<h&&ed[x][y+1]>edu)
edu=ed[x][y+1];
edu+=1;
mxed=mxed<edu?edu:mxed;
}
fout<<mxed<<endl;
return 0;
}
// UBWH