Submission #65790650


Source Code Expand

// 綺麗に解きなおし

#include <bits/stdc++.h>
using namespace std;

/////////////////// メイン ///////////////////

int main () {
  
  //////////////////// 入力 ////////////////////

  int n, m;
  cin >> n >> m;

  vector<int> a(m), b(m);
  for (int i=0; i<m; i++) {
    cin >> a.at(i) >> b.at(i);
  }

  //////////////// 出力変数定義 ////////////////

  // とりあえず、交わる交わらない関係なく、辺の組全パターン数を計算しておく
  // mの上限が30万ということは、int型に入りきらない可能性があるのでlong long型にしておく
  long long result = 1LL*m*(m-1)/2;

  //////////////////// 処理 ////////////////////

  // 各辺についてa+bをnで割った余りを求める
  // 各余りになるものがいくつあるか数えておく
  vector<int> counters(n);
  for (int i=0; i<m; i++) {
    counters.at((a.at(i)+b.at(i))%n)++;
  }

  // それぞれ、同じ余りになる組がいくつあるか求め、引いていく
  // 30万本全部平行だとint型に入りきらないのでlong long型にしておく
  for (int num : counters) {
    result -= 1LL*num*(num-1)/2;
  }

  //////////////////// 出力 ////////////////////

  cout << result << endl;

  //////////////////// 終了 ////////////////////

  return 0;

}

Submission Info

Submission Time
Task D - Line Crossing
User wightou
Language C++ 23 (gcc 12.2)
Score 400
Code Size 1364 Byte
Status AC
Exec Time 110 ms
Memory 9348 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 2
AC × 34
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt
All 00_sample_00.txt, 00_sample_01.txt, 01_test_00.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt, 01_test_26.txt, 01_test_27.txt, 01_test_28.txt, 01_test_29.txt, 01_test_30.txt, 01_test_31.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3548 KiB
00_sample_01.txt AC 1 ms 3380 KiB
01_test_00.txt AC 2 ms 3436 KiB
01_test_01.txt AC 17 ms 3572 KiB
01_test_02.txt AC 2 ms 3428 KiB
01_test_03.txt AC 18 ms 3556 KiB
01_test_04.txt AC 2 ms 3572 KiB
01_test_05.txt AC 29 ms 6728 KiB
01_test_06.txt AC 109 ms 8880 KiB
01_test_07.txt AC 104 ms 6512 KiB
01_test_08.txt AC 2 ms 3508 KiB
01_test_09.txt AC 19 ms 5420 KiB
01_test_10.txt AC 108 ms 8308 KiB
01_test_11.txt AC 35 ms 6772 KiB
01_test_12.txt AC 5 ms 7156 KiB
01_test_13.txt AC 99 ms 9200 KiB
01_test_14.txt AC 110 ms 9348 KiB
01_test_15.txt AC 53 ms 8084 KiB
01_test_16.txt AC 4 ms 7156 KiB
01_test_17.txt AC 93 ms 8936 KiB
01_test_18.txt AC 31 ms 6460 KiB
01_test_19.txt AC 32 ms 5408 KiB
01_test_20.txt AC 53 ms 4972 KiB
01_test_21.txt AC 61 ms 8352 KiB
01_test_22.txt AC 51 ms 8096 KiB
01_test_23.txt AC 57 ms 5744 KiB
01_test_24.txt AC 8 ms 6768 KiB
01_test_25.txt AC 69 ms 6308 KiB
01_test_26.txt AC 11 ms 7040 KiB
01_test_27.txt AC 82 ms 8836 KiB
01_test_28.txt AC 1 ms 3404 KiB
01_test_29.txt AC 1 ms 3436 KiB
01_test_30.txt AC 1 ms 3340 KiB
01_test_31.txt AC 72 ms 5400 KiB