Submission #1250060

#TimeUsernameProblemLanguageResultExecution timeMemory
1250060AliyyiakbarTriple Peaks (IOI25_triples)C++20
18 / 100
2095 ms1860 KiB
#include "triples.h"
#include "bits/stdc++.h"
using namespace std;

bool is(vector<int> &h, int i, int j, int k)
{
    if (j < i || k < i || k >= (int)h.size())
    {
        return 0;
    }
    vector<int> d = {abs(i - j), abs(j - k), abs(k - i)};
    vector<int> c = {h[i], h[j], h[k]};
    sort(d.begin(), d.end());
    sort(c.begin(), c.end());
    return (d == c);
}

long long count_triples(vector<int> h)
{
    int cnt = 0;
    for (int i = 0; i < (int)h.size(); ++i)
    {
        int j = i + h[i];
        if (j < (int)h.size() && h[j] != h[i])
        {
            if (i + h[j] != j + h[i])
            {
                cnt += is(h, i, j, i + h[j]);
            }
            if (i + h[j] != j - h[j])
            {
                cnt += is(h, i, j, j - h[j]);
            }
            cnt += is(h, i, j, j + h[j]);
        }
        for (j = i + 1; j + h[i] < (int)h.size(); ++j)
        {
            cnt += is(h, i, j, j + h[i]);
        }
    }
    return cnt;
}

vector<int> construct_range(int m, int k)
{
    return {1, 1, 1};
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...