Submission #150387

#TimeUsernameProblemLanguageResultExecution timeMemory
150387graneli (#200)Crosses on the Grid (FXCUP4_cross)C++17
100 / 100
132 ms12008 KiB
#include "cross.h" #include <bits/stdc++.h> #define F first #define S second #define mp make_pair #define pb push_back //#define ll __int128 #define ll long long #define LEFT(a) ((a)<<1) #define RIGHT(a) (LEFT(a) + 1) #define MID(a,b) ((a+b)>>1) #define MAX(a,b) ((a)>(b)?(a):(b)) #define MIN(a,b) ((a)<(b)?(a):(b)) #define y1 y122 using namespace std; const ll NN = 200005, M = 1e9; int n; pair < ll, ll > P[NN]; ll L[NN], R[NN]; ll ans, pas; priority_queue < ll > Q; ll SelectCross(int K, std::vector<int> aaa, std::vector<int> bbb) { n = (int)aaa.size(); for (int i = 1; i <= n; i++){ P[i].F = aaa[i - 1]; P[i].S = bbb[i - 1]; } sort (P + 1, P + n + 1); for (int i = 1; i <= n; i++){ L[i] = P[i].F; R[i] = P[i].S; } for (int i = n; i >= 1; i--){ if ((int)Q.size() == K - 1){ ll x = L[i]; ll y = R[i]; if (K > 1) y = -Q.top(); if (y > R[i]) y = R[i]; pas = y * y - (x - y) * (x - y); ans = max (ans, pas); } Q.push (-R[i]); if ((int)Q.size() >= K) Q.pop(); } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...