AtCoder Regular Contest #022 A問題 - スーパーICT高校生

Source

AtCoder Regular Contest #022
問題文

問題概要

アルファベットのみから成る文字列 $S$ が与えられる.
$S$ の部分列(連続している部分である必要はない)として $\verb|ICT|$ が含まれるかどうかを判定する問題.
ただし,アルファベット大文字と小文字は区別しない.

解法

最も左の $\verb|i|$,$\verb|I|$ を探し,それより右で,最も左の $\verb|c|$,$\verb|C|$ を探して,としていく.

C++によるスパゲッティなソースコード

#include<bits/stdc++.h>
using namespace std;

#define REP(i,a,b) for(i=a;i<b;i++)
#define rep(i,n) REP(i,0,n)

#define mygc(c) (c)=getchar_unlocked()
#define mypc(c) putchar_unlocked(c)

int reader(char c[]){int i,s=0;for(;;){mygc(i);if(i!=' '&&i!='\n'&&i!='\r'&&i!='\t') break;}c[s++]=i;for(;;){mygc(i);if(i==' '||i=='\n'||i=='\r'||i=='\t') break;c[s++]=i;}return s;}
void writer(const char c[]){int i;for(i=0;c[i]!='\0';i++)mypc(c[i]);}

int main(){
  int i, j, k, n;
  char in[1000];

  n = reader(in);
  rep(i,n) if(in[i]=='i' || in[i]=='I') break;
  REP(i,i,n) if(in[i]=='c' || in[i]=='C') break;
  REP(i,i,n) if(in[i]=='t' || in[i]=='T') break;

  if(i==n) writer("NO\n");
  else     writer("YES\n");

  return 0;
}

Current time: 2017年09月25日07時55分12秒
Last modified: 2014年05月10日02時54分45秒 (by laycrs)
Tags: Competitive_Programming AtCoder AtCoder_Regular_Contest ARC022 ARC_A
トップページに戻る

Logged in as: unknown user (not login)

ログイン: