Submission #1255191

#TimeUsernameProblemLanguageResultExecution timeMemory
1255191sleepntsheepTriple Peaks (IOI25_triples)C++20
34 / 100
2095 ms2632 KiB
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2")

#include "triples.h"
#include <algorithm>
#include <array>
#include<cstring>
#include <cstdio>

std::vector<int> H;
long long count;
int x[3],y[3];
void okay(std::vector<int> &H, register int i, register int j, register int k) {
    x[0]=H[i],x[1]=H[j],x[2]=H[k];
    y[0]=j-i,y[1]=k-i,y[2]=k-j;
    std::sort(x,x+3);
    std::sort(y,y+3);
    count+=!memcmp(x,y,3*sizeof*x);
}
long long count_triples(std::vector<int> H) {
    ::H=H;

    {
    int N = H.size();
    count = 0;
    for (int i = 0; i < N; ++i) {
        for (int k = i + 1; k < N; ++k) {
            if (k - i == H[i] or H[k] == k - i) {
                int lef = H[i] + H[k] - (k - i);
                if (lef >= (k - i)) continue;
                int j;
                j = i + lef;
                 (okay(H, i, j, k));
                if (k - lef != i + lef) {
                     (okay(H, i, k - lef, k));
                }
            } else {
                if (H[i] + H[k] != (k - i))
                    continue;
                int j;
                j = i + H[i];
                 (okay(H, i, j, k));
                if (i + H[i] != i + H[k]) {
                     (okay(H, i, i + H[k], k));
                }
            }
        }
    }
    return count;
}
}

std::vector<int> construct_range(int M, int K) {
  return {1, 1, 1};
}

Compilation message (stderr)

triples.cpp:13:45: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   13 | void okay(std::vector<int> &H, register int i, register int j, register int k) {
      |                                             ^
triples.cpp:13:61: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   13 | void okay(std::vector<int> &H, register int i, register int j, register int k) {
      |                                                             ^
triples.cpp:13:77: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   13 | void okay(std::vector<int> &H, register int i, register int j, register int k) {
      |                                                                             ^
#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...