Submission #396800

#TimeUsernameProblemLanguageResultExecution timeMemory
396800keta_tsimakuridzeThe Kingdom of JOIOI (JOI17_joioi)C++14
100 / 100
1354 ms95156 KiB
#include<bits/stdc++.h>
#define f first
#define s second
using namespace std;
const int N=2e3+5,mod=1e9+7;
int t,a[N][N],r[N],l[N],n,m,ans;
map<int,int> fix;
vector<int> val,val1;
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 =1e9+9;
	while(l<=r){
		int mid=(l+r)/2; 
		if(check(mid)) { 
			ans =min(ans, (mid-val[0])); 
			r=mid-1;
		}
		else l=mid+1;
	}
}
 main(){
 	ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	// t=1;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin >> a[i][j]; 
			val1.push_back(a[i][j]);
		}
		
	} 
	sort(val1.begin(),val1.end());
	for(int i=0;i<val1.size();i++){
		if(!i || val1[i]!=val1[i-1]) val.push_back(val1[i]);
	}
	 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();
	cout<<ans;
}

Compilation message (stderr)

joioi.cpp:59:7: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   59 |  main(){
      |       ^
joioi.cpp: In function 'int main()':
joioi.cpp:71:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   71 |  for(int i=0;i<val1.size();i++){
      |              ~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...