(200618) 코드포스

Codeforces materials usage license (v. 0.1) 에 따라 codeforces.com 의 문제임을 알립니다.

Original problem link: Problem - 1365A - Codeforces


Input

4
2 2
0 0
0 0
2 2
0 0
0 1
2 3
1 0 1
1 1 0
3 3
1 0 0
0 0 0
1 0 0

output

Vivek
Ashish
Vivek
Ashish

1365A
#include <iostream>
#include <vector>

using namespace std;

template<typename T>
constexpr inline T Max(T a, T b) {
  return a < b ? b : a;
}

template<typename T>
constexpr inline T Min(T a, T b) {
  return a < b ? a : b;
}

namespace {
constexpr char kVivek[] = "Vivek";
constexpr char kAshish[] = "Ashish";
}  // unnamed namespace;

int main(int argc, char** argv) {
//  ios::sync_with_stdio(false); 
//  cin.tie(NULL);
  
  int test_case;
  cin >> test_case;

  while (test_case--) {
    int row_count, col_count;
    
    cin >> row_count >> col_count;

    vector<pair<bool,bool>> visited(Max(row_count, col_count),{0, 0});
    int left_row_count = row_count;
    int left_col_count = col_count;

    for (int i = 0; i < row_count; ++i) {
      for (int j = 0; j < col_count; ++j) {
        int dummy;
        cin >> dummy;
        if (dummy) {
          if (!visited[i].first) {
            --left_row_count;
            visited[i].first = true;
          }
          if (!visited[j].second) {
            --left_col_count;
            visited[j].second = true;
          }
        }
      }
    }

    std::string winner = (Min(left_row_count, left_col_count) % 2) ? kAshish : kVivek;

    cout << winner << endl;
  }
  return 0;
}


Codeforces materials usage license (v. 0.1) 에 따라 codeforces.com 의 문제임을 알립니다.

Original problem link: Problem - 1365B - Codeforces

Example

Input

5
4
10 20 20 30
0 1 0 1
3
3 1 2
0 1 1
4
2 2 4 8
1 1 1 1
3
5 15 4
0 0 0
4
20 10 100 50
1 0 0 1

Output

Yes
Yes
Yes
No
Yes

이번것은 그나마 이해하기 쉽네요 문제가 :slight_smile:

1 Like
1365B
#include <iostream>
#include <string>

using namespace std;

namespace {
constexpr char kTrueString[] = "Yes";
constexpr char kFalseString[] = "No";
}  // unnamed namespace;

template<typename T>
constexpr inline T Max(T a, T b) {
  return a < b ? b : a;
}

template<typename T>
constexpr inline T Min(T a, T b) {
  return a < b ? a : b;
}

constexpr inline auto GetAnswerString(bool is_true) {
  return is_true ? kTrueString : kFalseString;
}

int main(int argc, char** argv) {
  ios::sync_with_stdio(false); 
  cin.tie(NULL);
  
  int test_case;
  cin >> test_case;

  bool a= 1;
  while (test_case--) {
    int n;
    cin >> n;
    
    int ans = true;

    int dummy;
    int before_dummy = 0;
    for (int i = 0; i < n; ++i) {
      cin >> dummy;
      if (before_dummy > dummy) ans = false;
      before_dummy = dummy;
    }

    if (ans) {
      while (n--) cin >> dummy;
      cout << GetAnswerString(ans) << endl;
      continue;
    }

    bool visited_type[2] = {false, false};
    while (n--) {
      cin >> dummy;
      visited_type[dummy] = true;
    }

     cout << GetAnswerString(visited_type[0] & visited_type[1]) <<endl;
  }
  return 0;
}

쉘선생님이 이해하셨으면 됬지요 ㅎㅎ

자 그럼 이제 같이…

너무 어렵읍니다

Codeforces materials usage license (v. 0.1) 에 따라 codeforces.com 의 문제임을 알립니다.

Original problem link: Problem - 1365C - Codeforces

Example

Input1

5
1 2 3 4 5
2 3 4 5 1

Output1

5

Input2

5
5 4 3 2 1
1 2 3 4 5

Output2

1

Input3

4
1 3 2 4
4 2 3 1

Output3

2

ㅋㅋㅋ :sweat_smile:

혹시 코드포스 link 파싱해서 link text 만들어주신건가요??
자동으로 붙던건 아닌거 같은 기억이 있는데 잘못된 기억인가…

예?! 아닙니다 판사님 저는…

1 Like

현재 contest가 있어서 채점이 불가능하네요. 일단 맞을지 모르겠지만~

1365C
#include <cmath>
#include <iostream>
#include <string>
#include <vector>

using namespace std;

namespace {
constexpr int kMaxN = 2 * 1e5;
constexpr char kTrueString[] = "Yes";
constexpr char kFalseString[] = "No";
}  // unnamed namespace;

constexpr inline auto GetAnswerString(bool is_true) {
  return is_true ? kTrueString : kFalseString;
}

vector<int> pos(kMaxN);
vector<int> right_dist(kMaxN);
vector<int> left_dist(kMaxN);

int main(int argc, char** argv) {
  ios::sync_with_stdio(false); 
  cin.tie(NULL);
  
  int n;
  cin >> n;

  auto initialize = [&]() {
    for (int i = 0; i < n; ++i) {
      pos[i] = 0;
      right_dist[i] = 0;
      left_dist[i] = 0;
    }
  };

  int input;
  for (int i = 0; i < n; ++i) {
    cin >> input;
    pos[input] = i;
  }

  for (int i = 0; i < n; ++i) {
    cin >> input;
    if (pos[input] < i) {
      ++left_dist[i - pos[input]];
      ++right_dist[pos[input] + n - i];
    } else {
      ++right_dist[pos[input] - i] ; 
      ++left_dist[i + n - pos[input]];
    }
  }

  int ans = 0;
  for (int i = 0; i < n; ++i) {
    ans = max(ans, max(right_dist[i], left_dist[i]));
  }

  cout << ans << endl;

  return 0;
}

코드포스 글을 꾸준히 올릴탠데요.
동료들이 생겼으면 하는 바람에서 동참 가이드를 적어봅니다.

(1)
동참은 항상 자유롭게 해주시면 좋습니다.
스포 금지를 위해 접이식으로 답을 달아 주세요. (옵션 - 세부 항목 숨기기)

(2)
다른 문제를 풀고 싶다! 이러시면 다른 문제를 같이 올려 주시면 같이 트라이 해보면 좋을 것 같습니다.
(License 준수를 위해 Original problem link를 꼭 걸어둡시다.)

(3)
질문 하세요.

제 경험 상 보통 고민을 안 하면 실력이 안 늘고, 고민을 너무 하면 비효율적입니다.
저는 제가 할 수 있는 모든 고민을 했는데 답이 안 나오면 남의 소스를 뒤지는데, 뒤져도 소스가 어떤 의미인지 몰라 시간을 버릴 때가 종종 있었어요.
먼저 푼 사람이 있는데 막힌다면 질문자는 스스로 충분히 고민을 해보고,
답변자는 여유가 된다면 답변을 해주는 좋은 문화가 생기면 좋겠네요.

“코드” 카테고리에 “ps” 태그를 사용 해 주시면 더 좋을 것 같읍니다. 태그 누르면 요렇게 되거든요. 그럼 나중에 찾아 보시기도 편할테구요.

1 Like