Submission #67072

# Submission time Handle Problem Language Result Execution time Memory
67072 2018-08-13T09:48:57 Z MrTEK Maxcomp (info1cup18_maxcomp) C++14
60 / 100
500 ms 20428 KB
#include <bits/stdc++.h>

using namespace std;
#define mp make_pair
#define pb push_back
#define len(a) (int)a.size()
#define fi first
#define sc second
#define d1(w) cerr<<#w<<":"<<w<<endl;
#define d2(w,c) cerr<<#w<<":"<<w<<" "<<#c<<":"<<c<<endl;
#define d3(w,c,z) cerr<<#w<<":"<<w<<" "<<#c<<":"<<c<<" "<<#z<<":"<<z<<endl;
#define left ind+ind
#define right ind+ind+1
#define mid (l+r)/2
#define FAST_IO ios_base::sync_with_stdio(false);
#define endl '\n'

const int maxn = 620;
const long long LINF = 1e18;
const int LOG = 31;
const int INF = 1e9;
const int N = 1e3 + 5;
const int M = 4;
const int SQ = 350;
const int MOD = 998244353;

typedef pair <int,int> pii;

struct node {
	int val,x,y;
};

bool operator < (node a ,node b) {
	return a.val < b.val;
}

vector <pair<int,pii> > v;

priority_queue <node> Q;

int n,m,mat[N][N],vis[N][N],ans = -INF,way[4][2] = {{1,0},{0,1},{0,-1},{-1,0}},last;

int main() {
	scanf("%d %d",&n,&m);
	for (short int i = 1 ; i <= n ; i++)
		for (short int j = 1 ; j <= m ; j++) {
			scanf("%d",&mat[i][j]);
			vis[i][j] = -INF;
			v.pb(mp(mat[i][j],mp(i,j)));
		}
	sort(v.begin(),v.end());
	last = len(v) - 1;
	Q.push({v[last].fi,v[last].sc.fi,v[last].sc.sc});
	last--;
	while(len(Q)) {
		auto temp = Q.top();
		Q.pop();
		int  val = temp.val,x = temp.x,y = temp.y;
		if (vis[x][y] > val) continue;
		ans = max(ans,val - mat[x][y] - 1);
		while(last > 0 && v[last].fi == val) {
			Q.push({v[last].fi,v[last].sc.fi,v[last].sc.sc});
			last--;
		}
		for (short int i = 0 ; i < 4 ; i++) {
			short int nx = x + way[i][0] , ny = y + way[i][1];
			if (nx > 0 && nx <= n && ny > 0 && ny <= m && val - 1 > vis[nx][ny]) {
				vis[nx][ny] = val - 1;
				Q.push({val - 1,nx,ny});				
			}
		}
	}
	printf("%d\n",ans);

}

Compilation message

maxcomp.cpp: In function 'int main()':
maxcomp.cpp:44:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d",&n,&m);
  ~~~~~^~~~~~~~~~~~~~~
maxcomp.cpp:47:9: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    scanf("%d",&mat[i][j]);
    ~~~~~^~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 248 KB Output is correct
2 Correct 3 ms 484 KB Output is correct
3 Correct 4 ms 484 KB Output is correct
4 Correct 2 ms 484 KB Output is correct
5 Correct 2 ms 484 KB Output is correct
6 Correct 2 ms 484 KB Output is correct
7 Correct 2 ms 540 KB Output is correct
8 Correct 3 ms 636 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 636 KB Output is correct
2 Correct 3 ms 636 KB Output is correct
3 Correct 3 ms 636 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 248 KB Output is correct
2 Correct 3 ms 484 KB Output is correct
3 Correct 4 ms 484 KB Output is correct
4 Correct 2 ms 484 KB Output is correct
5 Correct 2 ms 484 KB Output is correct
6 Correct 2 ms 484 KB Output is correct
7 Correct 2 ms 540 KB Output is correct
8 Correct 3 ms 636 KB Output is correct
9 Correct 4 ms 984 KB Output is correct
10 Correct 3 ms 984 KB Output is correct
11 Correct 4 ms 984 KB Output is correct
12 Correct 3 ms 1000 KB Output is correct
13 Correct 3 ms 1004 KB Output is correct
14 Correct 4 ms 1004 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 248 KB Output is correct
2 Correct 3 ms 484 KB Output is correct
3 Correct 4 ms 484 KB Output is correct
4 Correct 2 ms 484 KB Output is correct
5 Correct 2 ms 484 KB Output is correct
6 Correct 2 ms 484 KB Output is correct
7 Correct 2 ms 540 KB Output is correct
8 Correct 3 ms 636 KB Output is correct
9 Correct 3 ms 636 KB Output is correct
10 Correct 3 ms 636 KB Output is correct
11 Correct 3 ms 636 KB Output is correct
12 Correct 4 ms 984 KB Output is correct
13 Correct 3 ms 984 KB Output is correct
14 Correct 4 ms 984 KB Output is correct
15 Correct 3 ms 1000 KB Output is correct
16 Correct 3 ms 1004 KB Output is correct
17 Correct 4 ms 1004 KB Output is correct
18 Correct 466 ms 20356 KB Output is correct
19 Correct 485 ms 20364 KB Output is correct
20 Correct 466 ms 20364 KB Output is correct
21 Correct 444 ms 20428 KB Output is correct
22 Correct 485 ms 20428 KB Output is correct
23 Execution timed out 589 ms 20428 KB Time limit exceeded
24 Halted 0 ms 0 KB -