Submission #1306999

#TimeUsernameProblemLanguageResultExecution timeMemory
1306999MunkhErdeneTriple Peaks (IOI25_triples)C++17
Compilation error
0 ms0 KiB
#include "triples.h"
#include <bits/stdc++.h>
/*#ifdef LOCAL
#define dbg std::cout
#else
struct DebugDummy {
    template<typename T>
    DebugDummy& operator<<(const T&) { return *this; }
};
DebugDummy dbg;
#endif*/
//#define dbg cout
#define dbg cerr
using namespace std;
#define _ << ' ' <<
using ll = long long;
long long count_triples(std::vector<int> H) {
    vector<ll> a({H.begin(), H.end()});
    ll n = a.size();
    ll ans = 0;
    for(ll i = 0; i < n; i++) {
        for(ll j = i + 2; j < n; j++){
            auto [mx, mn] = make_pair(a[i], a[j]);
            if(mn > mx) swap(mx, mn);
            ll d = j - i;
            if(mx > d) continue;
            if(mx == d) {
                ll cand1 = i + mn;
                ll cand2 = j - mn;
                if(cand1 == cand2) {
                    if(j - cand1 == a[cand1] && cand1 != j) {ans++; dbg << i _ cand1 _ j << '\n';}
                    continue;
                }
                if(j - cand1 == a[cand1] && cand1 != j) {ans++; dbg << i _ cand1 _ j << '\n';}
                if(cand2 - i == a[cand2] && cand2 != i) {ans++; dbg << i _ cand2 _ j << '\n';}
                
            }
            else {
                if(a[i] + a[j] != d) continue;
                ll cand1 = i + mn;
                ll cand2 = i + mx;
                dbg << i _ j _ a[i] _ a[j] _ cand1 _ cand2 _ a[cand1] _ a[cand2] _ d<< '\n';
                if(cand1 == cand2) {
                    if(a[cand1] == d) {ans++; dbg << i _ cand1 _ j << '\n';}
                    continue;
                }
                if(a[cand1] == d) {ans++; dbg << i _ cand1 _ j << '\n';}
                if(a[cand2] == d) {ans++; dbg << i _ cand2 _ j << '\n';}
            }
        }
    }
    return ans;
}

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

namespace {

void run_part1() {
  int N;
  assert(1 == scanf("%d", &N));
  std::vector<int> H(N);
  for (int i = 0; i < N; i++)
    assert(1 == scanf("%d", &H[i]));
  fclose(stdin);

  long long T = count_triples(H);

  printf("%lld\n", T);
  fclose(stdout);
}

void run_part2() {
  int M, K;
  assert(2 == scanf("%d %d", &M, &K));
  fclose(stdin);

  std::vector<int> H = construct_range(M, K);

  int N = H.size();
  printf("%d\n", N);
  for (int i = 0; i < N; i++)
    printf("%d%c", H[i], " \n"[i + 1 == N]);
  fclose(stdout);
}

} // namespace

int main() {
  int part;
  assert(1 == scanf("%d", &part));
  if (part == 1)
    run_part1();
  else if (part == 2)
    run_part2();

  return 0;
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccvvk0MY.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/cc0QcqRP.o:triples.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status