제출 #70005

#제출 시각아이디문제언어결과실행 시간메모리
70005octopusesparentrises (BOI18_parentrises)C++17
50 / 100
62 ms9532 KiB
//Giorgi Kldiashvili

#include <bits/stdc++.h>

#define ll long long
#define fr first
#define sc second
#define M 1000000007

using namespace std;

const int N = 1000020;

int n, k;
int used[N];
bool f[N];
char ch[N];

void go1()
{
  vector < int > c; c.clear();
  scanf("%s", &ch);
  n = strlen(ch);
  int A, B; A = B = 0;
  for(int i = 0; i < n; ++ i)
  {
    if(ch[i] == '(') A ++;
    if(ch[i] == ')') B ++;
    if(B > A * 2)
    {
      printf("impossible\n");
      return;
    }
  }
  A = B = 0;
  for(int i = n - 1; i >= 0; -- i)
  {
    if(ch[i] == ')') A ++;
    if(ch[i] == '(') B ++;
    if(B > A * 2)
    {
      printf("impossible\n");
      return;
    }
  }
  for(int i = 0; i < n; ++ i)
    used[i] = 0, f[i] = 0;
  int now = 1;
  for(int i = 1; i < n; ++ i)
  {
    if(ch[i] == ')')
      c.push_back(i);
    now += (ch[i] == ')')?-1:1;
    if(now < 0)
    {
      used[c.back()] = 1; c.pop_back();
      used[c.back()] = 2; c.pop_back();
      now = 0;
    }
  }
  now = 1;
  c.clear();
  if(used[n - 1] == 2) now = 0;
  for(int i = n - 2; i >= 0; -- i)
  {
    if(used[i] == 2) continue;
    if(ch[i] == '(')
      c.push_back(i);
    now += (ch[i] == '(')?-1:1;
    if(now < 0)
    {
      used[c.back()] = 1; c.pop_back();
      used[c.back()] = 2; c.pop_back();
      now = 0;
    }
  }
  for(int i = 0; i < n; ++ i)
  {
    if(used[i] == 0) putchar('G');
    if(used[i] == 1) putchar('R');
    if(used[i] == 2) putchar('B');
  }
  printf("\n");
}

int A[305][305][305];

void go2()
{
  A[0][0][0] = 1;

}

int sub, T;

int main()
{
  scanf("%d", &sub);
  scanf("%d\n", &T);
  if(sub == 1)
  {
    while(T --)
      go1();
  } else
  {
    go2();
    while(T --)
    {
      scanf("%d", &n);
      printf("%d\n", A[n][0][0]);
    }
  }
}

컴파일 시 표준 에러 (stderr) 메시지

parentrises.cpp: In function 'void go1()':
parentrises.cpp:22:18: warning: format '%s' expects argument of type 'char*', but argument 2 has type 'char (*)[1000020]' [-Wformat=]
   scanf("%s", &ch);
               ~~~^
parentrises.cpp:22:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%s", &ch);
   ~~~~~^~~~~~~~~~~
parentrises.cpp: In function 'int main()':
parentrises.cpp:98:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", &sub);
   ~~~~~^~~~~~~~~~~~
parentrises.cpp:99:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d\n", &T);
   ~~~~~^~~~~~~~~~~~
parentrises.cpp:109:12: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
       scanf("%d", &n);
       ~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...