Submission #82322

# Submission time Handle Problem Language Result Execution time Memory
82322 2018-10-29T22:14:55 Z thiago4532 Doktor (COCI17_doktor) C++17
100 / 100
416 ms 79088 KB
#include <bits/stdc++.h>
 
using namespace std;
const int maxn = 2*500010;
int v[maxn], pref[maxn], n;
typedef pair<int, int> pii;

vector<int> c[maxn];
vector<pii> p;
vector<int> ord[maxn];

inline int qq(int a, int b){
	return pref[b] - pref[a-1];
}

void ordena(){
	for(auto v : p)
		ord[v.first].push_back(v.second);

	p.clear();
	for(int i=0;i<=2*n;i++){
		if(ord[i].empty()) continue;
		for(auto v : ord[i])
			p.push_back({i, v});
	}
}

int main(){
	ios::sync_with_stdio(false), cin.tie(0);
	cin >> n;
	
	for(int i=1;i<=n;i++){
		cin >> v[i<<1];
		v[i<<1] *= 2;
		
		int centro = (v[(i<<1)] + (i<<1))/2;
		p.push_back({abs(centro - (i<<1)), centro});
	}
 
	ordena();
	for(int i=1;i<=n;i++)
		c[p[i].second].push_back(p[i].first);

	for(int i=1;i<=n;i++)
		if(v[i<<1] == (i<<1)) pref[i<<1] = 1;
	for(int i=1;i<=2*n;i++)
		pref[i] += pref[i-1];
 
	int ans=0, a, b;
	for(int i=1;i<=2*n;i++){
		//sort(c[i].begin(), c[i].end());
		for(int j=0;j<c[i].size();j++){
			int qtd = j + 1 - qq(i-c[i][j], i+c[i][j]) + (!(i&1) && v[i] == i);
 
			if(qtd > ans){
				ans = qtd;
				a = i-c[i][j];
				b = i+c[i][j];
			}
		}
	}
 
	cout << v[a]/2 << " " << v[b]/2 << "\n";
	return 0;
}

Compilation message

doktor.cpp: In function 'int main()':
doktor.cpp:52:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int j=0;j<c[i].size();j++){
               ~^~~~~~~~~~~~
doktor.cpp:63:30: warning: 'b' may be used uninitialized in this function [-Wmaybe-uninitialized]
  cout << v[a]/2 << " " << v[b]/2 << "\n";
                           ~~~^
doktor.cpp:63:13: warning: 'a' may be used uninitialized in this function [-Wmaybe-uninitialized]
  cout << v[a]/2 << " " << v[b]/2 << "\n";
          ~~~^
# Verdict Execution time Memory Grader output
1 Correct 44 ms 47352 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 45 ms 47520 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 45 ms 47520 KB Output is correct
2 Correct 44 ms 47520 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 53 ms 47664 KB Output is correct
2 Correct 44 ms 47664 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 46 ms 47796 KB Output is correct
2 Correct 46 ms 47796 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 45 ms 47796 KB Output is correct
2 Correct 44 ms 47796 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 48 ms 48192 KB Output is correct
2 Correct 115 ms 62512 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 90 ms 62512 KB Output is correct
2 Correct 70 ms 62512 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 416 ms 79088 KB Output is correct
2 Correct 158 ms 79088 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 209 ms 79088 KB Output is correct
2 Correct 170 ms 79088 KB Output is correct