Submission #7084681


Source Code Expand

#include <iostream>
#include <vector>
#include <cstring>
#include <algorithm> // sort
#include <map>
#include <string>
#include <bits/stdc++.h>

#define REP(i, n) for (long long i = 0; i < (n); i++) 
typedef long long ll;

static const ll MOD = 1000000007;
static const ll INF = 1000000000000000000LL;
using namespace std;
using pint = pair<int,int>;


bool res = false;
vector <int> NG(3);
int dfs(int n, int cnt)
{
  if(cnt > 100)return -1;
  if(res == true)return 0;
  if(n == 0)
  {
    res = true;
    cout << cnt << endl;
    return 0;
  }

  bool fag1 = true;
  bool fag2 = true;
  bool fag3 = true;

  REP(i,3)
  {
    if(n-1 == NG[i])fag1 = false;
    if(n-2 == NG[i])fag2 = false;
    if(n-3 == NG[i])fag3 = false;
  }
  if(fag3)
  {
    dfs(n-3, cnt + 1);
  }
  else if(fag2)
  {
    dfs(n-2, cnt + 1);
  }
  else if(fag1)
  {
    dfs(n-1, cnt + 1);
  }
  else
  {
    return -1;
  }

  return -1;
}

//1, 2, 3 引き算
//観点: 3つが連続していなければOK, NでなければOK
//ただし,100回以内に納めること <= 300 
int main(){
  int N;
  cin >> N;
  if(N > 300)
  {
    cout << "NO" << endl;
    return 0;
  }

  REP(i,3)
  {
    cin >> NG[i];
  }
  REP(i,3)
  {
    if(N == NG[i])
    {
      cout << "NO" << endl;
      return 0;      
    }
  }

  sort(NG.begin(),NG.end());

  int ren = 1;

  REP(i,2)
  {
    if(NG[i] == NG[i+1] -1)++ren;
  }

  if(ren == 3)
  {
    cout << "NO" << endl;
    return 0;
  }

  dfs(N,0);

  string str = "NO";

  if(res == true)
  {
    str = "YES";
  }

  cout << str << endl;

  return 0;
}

Submission Info

Submission Time
Task C - 123引き算
User mozaic
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1680 Byte
Status WA
Exec Time 1 ms
Memory 256 KB

Judge Result

Set Name All
Score / Max Score 0 / 100
Status
AC × 15
WA × 16
Set Name Test Cases
All sample_01.txt, sample_02.txt, sample_03.txt, test_143_142_141_140.txt, test_1_1_2_3.txt, test_1_2_3_4.txt, test_200_200_2_3.txt, test_231_77_78_80.txt, test_235_124_126_125.txt, test_253_45_47_48.txt, test_297_223_224_225.txt, test_297_294_292_290.txt, test_297_297_30_83.txt, test_297_3_43_72.txt, test_298_125_123_124.txt, test_298_293_295_291.txt, test_298_298_4_8.txt, test_298_36_72_98.txt, test_298_55_3_43.txt, test_298_92_91_295.txt, test_299_200_151_65.txt, test_299_240_35_154.txt, test_299_300_299_298.txt, test_299_33_242_151.txt, test_299_56_57_58.txt, test_299_66_132_198.txt, test_300_271_44_68.txt, test_300_299_298_296.txt, test_300_30_99_183.txt, test_300_4_5_6.txt, test_84_34_64_36.txt
Case Name Status Exec Time Memory
sample_01.txt WA 1 ms 256 KB
sample_02.txt WA 1 ms 256 KB
sample_03.txt AC 1 ms 256 KB
test_143_142_141_140.txt AC 1 ms 256 KB
test_1_1_2_3.txt AC 1 ms 256 KB
test_1_2_3_4.txt WA 1 ms 256 KB
test_200_200_2_3.txt AC 1 ms 256 KB
test_231_77_78_80.txt WA 1 ms 256 KB
test_235_124_126_125.txt AC 1 ms 256 KB
test_253_45_47_48.txt WA 1 ms 256 KB
test_297_223_224_225.txt AC 1 ms 256 KB
test_297_294_292_290.txt WA 1 ms 256 KB
test_297_297_30_83.txt AC 1 ms 256 KB
test_297_3_43_72.txt WA 1 ms 256 KB
test_298_125_123_124.txt AC 1 ms 256 KB
test_298_293_295_291.txt AC 1 ms 256 KB
test_298_298_4_8.txt AC 1 ms 256 KB
test_298_36_72_98.txt WA 1 ms 256 KB
test_298_55_3_43.txt WA 1 ms 256 KB
test_298_92_91_295.txt WA 1 ms 256 KB
test_299_200_151_65.txt WA 1 ms 256 KB
test_299_240_35_154.txt WA 1 ms 256 KB
test_299_300_299_298.txt AC 1 ms 256 KB
test_299_33_242_151.txt AC 1 ms 256 KB
test_299_56_57_58.txt AC 1 ms 256 KB
test_299_66_132_198.txt WA 1 ms 256 KB
test_300_271_44_68.txt WA 1 ms 256 KB
test_300_299_298_296.txt WA 1 ms 256 KB
test_300_30_99_183.txt AC 1 ms 256 KB
test_300_4_5_6.txt AC 1 ms 256 KB
test_84_34_64_36.txt WA 1 ms 256 KB