Submission #1697792


Source Code Expand

#include <assert.h>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <climits>
#include <algorithm>
#include <numeric>
#include <functional>
#include <iostream>
#include <string>
#include <array>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <complex>
#include <bitset>
typedef long long ll;
typedef unsigned long long ull;

#define REP(i, n) for (int i = 0; i < n; i++)
#define REPR(i, n) for (int i = n; i >= 0; i--)

using namespace std;

// 座標圧縮
template <typename T>
struct Compressor {
  map<T, int> compressor;
  vector<T> extractor;

  explicit Compressor(vector<T> originals) {
    sort(originals.begin(), originals.end());
    originals.erase(unique(originals.begin(), originals.end()),
                    originals.end());

    extractor = vector<T>(originals.size(), 0);
    for (int i = 0; i < originals.size(); i++) {
      compressor[originals[i]] = i;
      extractor[i] = originals[i];
    }
  }
  int size() {
    return compressor.size();
  }
  int compress(T value) {
    return compressor[value];
  }
  vector<int> compress(const vector<T> &values) {
    // <int> を返したいので for_each は使えない
    vector<int> results(values.size());
    for (int i = 0; i < values.size(); i++) {
      results[i] = compress(values[i]);
    }
    return results;
  }
  vector<bool> compress_as_flag(const vector<T> &values) {
    vector<bool> results(this->size(), false);
    for (int i = 0; i < values.size(); i++) {
      results[compress(values[i])] = true;
    }
    return results;
  }
  T extract(int index) {
    return extractor[index];
  }
};

int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);

  int NA, NB;
  cin >> NA >> NB;

  vector<int> A(NA, 0);
  vector<int> B(NB, 0);
  vector<int> all(NA + NB, 0);

  REP(i, NA) {
    cin >> A[i];
    all[i] = A[i];
  }
  REP(i, NB) {
    cin >> B[i];
    all[NA + i] = B[i];
  }

  Compressor<int> c(all);
  vector<bool> ia = c.compress_as_flag(A);
  vector<bool> ib = c.compress_as_flag(B);
  int x = 0;
  int y = 0;
  REP(i, c.size()) {
    if (ia[i] && ib[i]) {
      x++;
    }
    y++;
  }
  printf("%.10f\n", 1.0 * x / y);
  return 0;
}

Submission Info

Submission Time
Task B - メタ構文変数
User sinhrks
Language C++14 (GCC 5.4.1)
Score 100
Code Size 2318 Byte
Status AC
Exec Time 170 ms
Memory 12800 KB

Judge Result

Set Name Sample Subtask1 Subtask2 Subtask3
Score / Max Score 0 / 0 40 / 40 30 / 30 30 / 30
Status
AC × 2
AC × 11
AC × 19
AC × 28
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
Subtask1 sample_01.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt
Subtask2 sample_01.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt
Subtask3 sample_01.txt, sample_02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask3_01.txt, subtask3_02.txt, subtask3_03.txt, subtask3_04.txt, subtask3_05.txt, subtask3_06.txt, subtask3_07.txt, subtask3_08.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 256 KB
sample_02.txt AC 1 ms 256 KB
subtask1_01.txt AC 1 ms 256 KB
subtask1_02.txt AC 1 ms 256 KB
subtask1_03.txt AC 2 ms 384 KB
subtask1_04.txt AC 2 ms 384 KB
subtask1_05.txt AC 2 ms 384 KB
subtask1_06.txt AC 2 ms 384 KB
subtask1_07.txt AC 2 ms 384 KB
subtask1_08.txt AC 2 ms 384 KB
subtask1_09.txt AC 1 ms 256 KB
subtask1_10.txt AC 2 ms 384 KB
subtask2_01.txt AC 48 ms 4608 KB
subtask2_02.txt AC 112 ms 7680 KB
subtask2_03.txt AC 41 ms 3456 KB
subtask2_04.txt AC 114 ms 7680 KB
subtask2_05.txt AC 28 ms 3200 KB
subtask2_06.txt AC 69 ms 6528 KB
subtask2_07.txt AC 92 ms 6912 KB
subtask2_08.txt AC 113 ms 7680 KB
subtask3_01.txt AC 93 ms 8192 KB
subtask3_02.txt AC 170 ms 12800 KB
subtask3_03.txt AC 25 ms 2304 KB
subtask3_04.txt AC 117 ms 7680 KB
subtask3_05.txt AC 83 ms 7424 KB
subtask3_06.txt AC 164 ms 12800 KB
subtask3_07.txt AC 97 ms 8192 KB
subtask3_08.txt AC 134 ms 9728 KB