Submission #817441


Source Code Expand

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <cmath>


#define pb push_back
#define rep(i,n) for(int i = 0; i < n ; i++)

static const int INF = (1<<21);
using namespace std;



template
<
    typename TYPE,
    std::size_t SIZE
>
std::size_t array_length(const TYPE (&array)[SIZE])
{
    return SIZE;
}


int facctorialMethod(int k) {//kの階乗関数
    int sum = 1;for (int i = 1; i <= k; ++i){sum *= i;}
    return sum;}

int combination(int n, int k){  //nCkの関数
  int result = facctorialMethod(n) / (facctorialMethod(n - k) * facctorialMethod (k));
  return result;}
/*
int LIS(int A[],int n){
  int len=0; int* p;
  vector<int> L;
  L.pb(A[0]);
  rep(i,n){
    p = lower_bound(L.begin(),L.end(),A[i+1])
    if (p == L.end())

  }

}
*/

//配列を逆転させる
void reverse(int array[], int length)
{
  int i, j;
  int temp;

  for( i = 0, j = length - 1; i < j; i++, j-- )
  {
      temp = array[i];
      array[i] = array[j];
      array[j] = temp;
  }
}

// 各桁を配列要素に分解 配列を返す
  void slice_digit(int num, int result[]){
    int mod = 0;int i = 0;
    int digit = (int)log10(num) + 1;
  //  int result[(int)log10((double)num) + 1];

    while( num >= 1){
      mod = num % 10;
      num /= 10;
      result[i++] = mod;
    }
    reverse(result,digit);
  }





int main(void){
  int N;int k;
  bool flag = true;bool flag2 = false;
  cin >> N >> k;
  //string Nstring = to_string(N);
  int D[k];int judge[10];
  int digit = (int)log10(N) + 1; int memorize;
  int resultmain[5];

  rep(i,10){
    judge[i] = 0;
  }

  rep(i,k){
    cin >> D[i];
    judge[D[i]] = 1;
  }

  slice_digit(N,resultmain);

  for(int i = 0; i < digit; i ++){
    flag = true;
    memorize = resultmain[i];
    while(flag){
      if(flag2){
        resultmain[i] = 0;
        flag2 = false;
      }
      if(judge[resultmain[i]] == 1){
        resultmain[i] += 1;
      }else{
        flag = false;
      }

    }

    if(memorize != resultmain[i]){
      flag2 = true;
    }
  }


  rep(i,digit){
    cout << resultmain[i];
  }
  cout << endl;
  return 0;
}

Submission Info

Submission Time
Task C - Iroha's Obsession
User imitation0813
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2246 Byte
Status WA
Exec Time 4 ms
Memory 256 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 300
Status AC
AC × 7
WA × 3
Set Name Test Cases
Sample
All subtask0_sample_01.txt, subtask0_sample_02.txt, subtask1_X_01.txt, subtask1_X_02.txt, subtask1_X_03.txt, subtask1_X_04.txt, subtask1_X_05.txt, subtask1_X_06.txt, subtask1_X_07.txt, subtask1_X_08.txt
Case Name Status Exec Time Memory
subtask0_sample_01.txt AC 4 ms 256 KiB
subtask0_sample_02.txt AC 4 ms 256 KiB
subtask1_X_01.txt AC 4 ms 256 KiB
subtask1_X_02.txt WA 4 ms 256 KiB
subtask1_X_03.txt AC 4 ms 256 KiB
subtask1_X_04.txt WA 4 ms 256 KiB
subtask1_X_05.txt AC 4 ms 256 KiB
subtask1_X_06.txt WA 4 ms 256 KiB
subtask1_X_07.txt AC 4 ms 256 KiB
subtask1_X_08.txt AC 4 ms 256 KiB