답안 #1054179

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1054179 2024-08-12T07:20:31 Z kiryl_krutsko Palembang Bridges (APIO15_bridge) C++14
0 / 100
1 ms 348 KB
#include <iostream>
#include <vector>
#include <cmath>

using namespace std;

struct way {
  int left, right;
  way(int n1, int n2) {
    left = min(n1, n2);
    right = max(n1, n2);
  }
};

int bs(int start, int end, vector<way>* vec, int start_ans) {
  int ans = start_ans;
  int right = 0;
  int left = 0;
  int mid = (start + end) / 2;
  //cout << mid << " : ";
  for (int i = 0; i < vec->size();i++) {
    way cur = vec->at(i);
    if (cur.right < mid) {
      ans += (mid - cur.right) * 2;
      left++;
    }
    else if (cur.left > mid) {
      ans += (cur.left - mid) * 2;
      right++;
    }
    else if (cur.left<start && cur.right>start) {
      vec->erase(vec->begin() + i);
      i--;
    }
  }
  //cout << left << " " << right << " " << endl << "ans : " << ans << endl;
  if (right == left || start == end) {
    //cout << mid << endl;
    return ans;
  }
  else if (right > left) {
    return bs(mid + 1, end, vec, start_ans);
  }
  else {
    return bs(start, mid, vec, start_ans);
  }
}

int main()
{
  int n, k, ans;
  cin >> k >> n;
  ans = 0;
  vector<way> vec;
  int n1, n2;
  char t1, t2;
  int max = 0;
  int min = 1000000001;
  for (int i = 0; i < n; i++) {
    cin >> t1 >> n1 >> t2 >> n2;
    ans += abs(n1 - n2);
    if (t1 != t2) {
      ans++;
      way w = way(n1, n2);
      if (w.left < min) min = w.left;
      if (w.right > max) max = w.right;
      vec.push_back(w);
    }
  }
  if (k == 1) {
    cout << bs(min, max, &vec, ans) << endl;
  }
}

Compilation message

bridge.cpp: In function 'int bs(int, int, std::vector<way>*, int)':
bridge.cpp:21:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<way>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   21 |   for (int i = 0; i < vec->size();i++) {
      |                   ~~^~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Incorrect 0 ms 348 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Incorrect 0 ms 348 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -