답안 #70662

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
70662 2018-08-23T08:20:59 Z octopuses Alternating Current (BOI18_alternating) C++17
컴파일 오류
0 ms 0 KB
//Giorgi Kldiashvili
#include <bits/stdc++.h>

#define ll long long


using namespace std;

const int N = 100020;

int n, m;

inline int dis(int x, int y)
{
  if(y < x)
    return n + y - x + 1;
  return y - x + 1;
}

vector < pair < int, int > > A[N];
int answer[N], S[N][2];

int main()
{
  scanf("%d %d", &n, &m);
  int ci, cm; ci = cm = 0;
  for(int i = 1; i <= m; ++ i)
  {
    int x, y;
    scanf("%d %d", &x, &y);
    A[x - 1].push_back(make_pair(dis(x, y), i));
    if(dis(x, y) > cm)
      ci = x - 1, cm = dis(x, y);
  }

  for(ci = 0; ci < n; ++ ci)
  {
    for(int p = 0; p < n; ++ p)
    {
      int i = (p + ci) % n;
      for(int j = 0; j < A[i].size(); ++ j)
      {
        int x = A[i][j].first;
        int c = 0;
        for(int k = 0; k < n; ++ k)
        {
          int now = (i + k) % n;
          if(S[now][0] == 0)
          {
            c = 0;
            break;
          }
          if(S[now][1] == 0)
          {
            c = 1;
            break;
          }
        }
        answer[A[i][j].second] = c;
        for(int k = 0; k < x; ++ k)
          S[(i + k) % n][c] = 1;
      }
    }
    for(int i = 0; i < n; ++ i)
      if(S[i][0] == 0 || S[i][1] == 0)
      {
        B = false; break;
      }
    if(B) break;
    for(int i = 0; i < n; ++ i)
      S[i][0] = S[i][1] = 0;
  }
  for(int i = 0; i < n; ++ i)
    if(S[i][0] == 0 || S[i][1] == 0)
      return printf("impossible"), 0;
  for(int i = 1; i <= m; ++ i)
    printf("%d", answer[i]);
}

Compilation message

alternating.cpp: In function 'int main()':
alternating.cpp:41:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       for(int j = 0; j < A[i].size(); ++ j)
                      ~~^~~~~~~~~~~~~
alternating.cpp:67:9: error: 'B' was not declared in this scope
         B = false; break;
         ^
alternating.cpp:69:8: error: 'B' was not declared in this scope
     if(B) break;
        ^
alternating.cpp:25:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d %d", &n, &m);
   ~~~~~^~~~~~~~~~~~~~~~~
alternating.cpp:30:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d", &x, &y);
     ~~~~~^~~~~~~~~~~~~~~~~