답안 #396787

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
396787 2021-04-30T18:34:28 Z keta_tsimakuridze The Kingdom of JOIOI (JOI17_joioi) C++14
60 / 100
4000 ms 65788 KB
#include<bits/stdc++.h>
#define f first
#define int long long
#define s second
using namespace std;
const int N=2e3+5,mod=1e9+7;
int t,a[N][N],r[N],l[N],mn[N],mx[N],n,m,ans,mid;
map<int,int> fix,ind;
vector<int> val;
string s;

bool check(int mx1){
	int diff=mx1-val[0];
	for(int i=1;i<=n;i++) {
		l[i]=m+1;  r[i]=0;
	}
	for(int i=1;i<=n;i++) {
		for(int j=m;j>=1;j--){
			if(a[i][j]>mx1) l[i] = j - 1;
		}
		for(int j=1;j<=m;j++){
			if(a[i][j]+diff<val.back()) r[i] = j ;
		}
		 // [r[i] , l[i]) 
		 if(l[i]<r[i]) return 0;
	}
	int F=0;
	int cur=m;
	for(int i=1;i<=n;i++) {
		if(r[i]>cur) {
			F=1;
			break;
		} 
		cur = min(l[i],cur);
	}
	if(!F) return 1; 
	F=0;
	cur=0;
	for(int i=1;i<=n;i++) {
		if(l[i]<cur) {
			F=1;
			break;
		}
		cur = max(r[i],cur);
	}
	if(!F) return 1;
	return 0;
}
void search(){	
	int l = 0,r =(int)val.size()-1;
	while(l<=r){
		 mid=(l+r)/2; 
		if(check(val[mid])) { 
			ans =min(ans, (val[mid]-val[0])); 
			r=mid-1;
		}
		else l=mid+1;
	}
}
 main(){
	// t=1;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin >> a[i][j]; 
			if(!fix[a[i][j]]) val.push_back(a[i][j]);
			fix[a[i][j]]=1;
		}
		
	} 
	sort(val.begin(),val.end()); ans=val.back()-val[0];
	search();
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m/2;j++){
			swap(a[i][j],a[i][m-j+1]);
		}
	}
	search();
	val.clear();
	for(int i=1;i<=n;i++) {
		for(int j=1;j<=m;j++){
			a[i][j]=-a[i][j];
			if(!fix[a[i][j]]) val.push_back(a[i][j]);
			fix[a[i][j]]=1;
		}
	}
	sort(val.begin(),val.end());
	search();
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m/2;j++){
			swap(a[i][j],a[i][m-j+1]);
		}
	}
	search();
	cout<<ans;
}

Compilation message

joioi.cpp:60:7: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   60 |  main(){
      |       ^
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
7 Correct 1 ms 332 KB Output is correct
8 Correct 1 ms 332 KB Output is correct
9 Correct 1 ms 332 KB Output is correct
10 Correct 1 ms 332 KB Output is correct
11 Correct 1 ms 332 KB Output is correct
12 Correct 1 ms 332 KB Output is correct
13 Correct 1 ms 332 KB Output is correct
14 Correct 1 ms 332 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
7 Correct 1 ms 332 KB Output is correct
8 Correct 1 ms 332 KB Output is correct
9 Correct 1 ms 332 KB Output is correct
10 Correct 1 ms 332 KB Output is correct
11 Correct 1 ms 332 KB Output is correct
12 Correct 1 ms 332 KB Output is correct
13 Correct 1 ms 332 KB Output is correct
14 Correct 1 ms 332 KB Output is correct
15 Correct 1 ms 352 KB Output is correct
16 Correct 13 ms 1420 KB Output is correct
17 Correct 62 ms 6892 KB Output is correct
18 Correct 56 ms 6840 KB Output is correct
19 Correct 64 ms 6976 KB Output is correct
20 Correct 51 ms 6076 KB Output is correct
21 Correct 63 ms 7100 KB Output is correct
22 Correct 68 ms 7036 KB Output is correct
23 Correct 83 ms 7040 KB Output is correct
24 Correct 52 ms 6252 KB Output is correct
25 Correct 73 ms 7132 KB Output is correct
26 Correct 62 ms 7144 KB Output is correct
27 Correct 62 ms 7136 KB Output is correct
28 Correct 64 ms 7076 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
7 Correct 1 ms 332 KB Output is correct
8 Correct 1 ms 332 KB Output is correct
9 Correct 1 ms 332 KB Output is correct
10 Correct 1 ms 332 KB Output is correct
11 Correct 1 ms 332 KB Output is correct
12 Correct 1 ms 332 KB Output is correct
13 Correct 1 ms 332 KB Output is correct
14 Correct 1 ms 332 KB Output is correct
15 Correct 1 ms 352 KB Output is correct
16 Correct 13 ms 1420 KB Output is correct
17 Correct 62 ms 6892 KB Output is correct
18 Correct 56 ms 6840 KB Output is correct
19 Correct 64 ms 6976 KB Output is correct
20 Correct 51 ms 6076 KB Output is correct
21 Correct 63 ms 7100 KB Output is correct
22 Correct 68 ms 7036 KB Output is correct
23 Correct 83 ms 7040 KB Output is correct
24 Correct 52 ms 6252 KB Output is correct
25 Correct 73 ms 7132 KB Output is correct
26 Correct 62 ms 7144 KB Output is correct
27 Correct 62 ms 7136 KB Output is correct
28 Correct 64 ms 7076 KB Output is correct
29 Execution timed out 4008 ms 65788 KB Time limit exceeded
30 Halted 0 ms 0 KB -