# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
495644 | Amer | Hedgehog Daniyar and Algorithms (IZhO19_sortbooks) | C++14 | 3079 ms | 81040 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#include<map>
#include<vector>
#include<queue>
#include<stack>
using namespace std;
class mem
{
public:
int maxCombination = 0;
int maxNumber = 0;
int lastIndex = 0;
};
struct CompareMem {
bool operator()(mem const& a, mem const& b)
{
// return "true" if "p1" is ordered
// before "p2", for example:
return a.lastIndex > b.lastIndex;
}
};
const int maxN = 1000005;
int arr[maxN];
map<int, priority_queue<mem, vector<mem>, CompareMem>> memorisation;
int solve(int start, int finish, int mood)
{
bool possible = true;
mem now;
now.lastIndex = finish;
now.maxNumber = arr[start - 1];
now.maxCombination = 0;
for (int i = start; i < finish; i++)
{
stack<mem> temp;
if (memorisation[i].size() != 0)
{
for (int j = 0; j < memorisation[i].size(); j++)
{
if (memorisation[i].top().lastIndex < finish)
{
if (memorisation[i].top().maxCombination > mood)
{
return false;
}
}
else
{
break;
}
temp.push(memorisation[i].top());
memorisation[i].pop();
}
while (!temp.empty())
{
memorisation[i].push(temp.top());
temp.pop();
}
}
if (now.maxNumber > arr[i])
{
if (arr[i] + now.maxNumber > mood)
{
possible = false;
}
if (arr[i] + now.maxNumber > now.maxCombination)
{
now.maxCombination = arr[i] + now.maxNumber;
}
}
else
{
now.maxNumber = arr[i];
}
}
memorisation[start].push(now);
return possible;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n, m;
cin >> n >> m;
for (int i = 0; i < n; i++)
{
cin >> arr[i];
}
for (int i = 0; i < m; i++)
{
int start, finish, mood;
cin >> start >> finish >> mood;
cout << solve(start, finish, mood)<<endl;
}
}
/*
5 2
3 5 1 8 2
1 3 6
2 5 3
*/
Compilation message (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... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |