# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
832686 | Jokubas | Crosses on the Grid (FXCUP4_cross) | C++17 | 1 ms | 300 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <iostream>
#include <bits/stdc++.h>
#define pb push_back
typedef long long ll;
using namespace std;
ll SelectCross (int K, vector<int> I, vector<int> O)
{
ll ats = 0;
int N = I.size();
map<int, vector<int>> lol;
vector<pair<int, int>> visi;
for(int i = 0; i<N; i++)
{
visi.pb({I[i], O[i]});
lol[I[i]].pb(O[i]);
}
sort(visi.begin(), visi.end());
reverse(visi.begin(), visi.end());
int kiek = lol.size();
int kur = 0;
int isviso = 0;
//vector<int> didziausi;
deque<int> didziausi;
for(int i = 0; i<kiek; i++)
{
int dabar = visi[kur].first;
int kiekisI = lol[dabar].size();
isviso += kiekisI;
int k = 0;
int j = 0;
while(j < K && k < kiekisI)
{
if(didziausi.size() - 1 <= j)
{
didziausi.pb(visi[kur + k].second);
j++; k++;
continue;
}
if(visi[kur + k].second < didziausi[min((int)didziausi.size()-1, K-1)])
{
j = min((int)didziausi.size()-1, K-1) + 1;
continue;
}
if(visi[kur + k].second > didziausi[j])
{
didziausi.insert(didziausi.begin() + j, visi[kur + k].second);
k++;
}
j++;
}
ll plotas = (ll)dabar*(2*(ll)didziausi[min((int)didziausi.size()-1, K-1)] - (ll)dabar);
ats = max(ats, plotas);
kur = isviso;
}
return ats;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |