Language: C++

以下、「すぬけさんが満足するレンガの砕き方」を「いい砕き方」と言います。
まず 1 が書かれたレンガが存在しない場合、答えは明らかに −1 です。
そうでない場合、1 が書かれたレンガの中で最も左にあるものの番号を i とします。このとき、i
番目のレンガを砕く「いい砕き方」に対して、それと同じ個数のレンガが残るような、i 番目のレン
ガを砕かない「いい砕き方」が存在します。というのも、元の砕き方で残る 1 が書かれたレンガを砕
き、代わりに i 番目のレンガを砕かないとしても変わらず「いい砕き方」になるからです。よって、
残すレンガの個数が最大の「いい砕き方」を探す上で、i 番目のレンガは砕かないと仮定しても問題
ありません。
同様の考え方をすると、i 番目のレンガより右にあるレンガの中に 2 が書かれたものが存在してい
れば、そのうち最も左にあるものは砕かずに残すと仮定することが可能です。
この貪欲的なアプローチを繰り返していくことで、残すレンガの個数が最大の「いい砕き方」を見
つけることができます。
組合せ最適化問題を解く際に、ある要素を選んで損をすることがないので、その要素を選ぶと仮定
して探索空間を小さくする、というアイデアは、競技プログラミングにおける貪欲法で典型的です。​#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
  ll n;
  cin>>n;
  ll a[n];
  for(ll i=0;i<n;i++)
    cin>>a[i];
  ll j=1;
  ll res=0;
  for(ll i =0;i<n;j++)
  {
    if(a[i]==j)
      j++;
    else
      res++;
  }
  if(res==n)
    cout<<-1<<endl;
  else 
    cout<<res<<endl;
  return 0;
}
  

Compiler output:
a.cc:1:1: error: extended character 、 is not valid in an identifier
    1 | 以下、「すぬけさんが満足するレンガの砕き方」を「いい砕き方」と言います。
      | ^
a.cc:1:1: error: extended character 「 is not valid in an identifier
a.cc:1:1: error: extended character 」 is not valid in an identifier
a.cc:1:1: error: extended character 「 is not valid in an identifier
a.cc:1:1: error: extended character 」 is not valid in an identifier
a.cc:1:1: error: extended character 。 is not valid in an identifier
a.cc:2:8: error: extended character 、 is not valid in an identifier
    2 | まず 1 が書かれたレンガが存在しない場合、答えは明らかに −1 です。
      |        ^
a.cc:2:57: error: extended character − is not valid in an identifier
    2 | まず 1 が書かれたレンガが存在しない場合、答えは明らかに −1 です。
      |                                                         ^
a.cc:2:60: error: extended character 。 is not valid in an identifier
    2 | まず 1 が書かれたレンガが存在しない場合、答えは明らかに −1 です。
      |                                                            ^
a.cc:3:1: error: extended character 、 is not valid in an identifier
    3 | そうでない場合、1 が書かれたレンガの中で最も左にあるものの番号を i とします。このとき、i
      | ^
a.cc:3:68: error: extended character 。 is not valid in an identifier
    3 | そうでない場合、1 が書かれたレンガの中で最も左にあるものの番号を i とします。このとき、i
      |                                                                    ^
a.cc:3:68: error: extended character 、 is not valid in an identifier
a.cc:4:1: error: extended character 「 is not valid in an identifier
    4 | 番目のレンガを砕く「いい砕き方」に対して、それと同じ個数のレンガが残るような、i 番目のレン
      | ^
a.cc:4:1: error: extended character 」 is not valid in an identifier
a.cc:4:1: error: extended character 、 is not valid in an identifier
a.cc:4:1: error: extended character 、 is not valid in an identifier
a.cc:5:1: error: extended character 「 is not valid in an identifier
    5 | ガを砕かない「いい砕き方」が存在します。というのも、元の砕き方で残る 1 が書かれたレンガを砕
      | ^
a.cc:5:1: error: extended character 」 is not valid in an identifier
a.cc:5:1: error: extended character 。 is not valid in an identifier
a.cc:5:1: error: extended character 、 is not valid in an identifier
a.cc:6:1: error: extended character 、 is not valid in an identifier
    6 | き、代わりに i 番目のレンガを砕かないとしても変わらず「いい砕き方」になるからです。よって、
      | ^
a.cc:6:16: error: extended character 「 is not valid in an identifier
    6 | き、代わりに i 番目のレンガを砕かないとしても変わらず「いい砕き方」になるからです。よって、
      |                ^
a.cc:6:16: error: extended character 」 is not valid in an identifier
a.cc:6:16: error: extended character 。 is not valid in an identifier
a.cc:6:16: error: extended character 、 is not valid in an identifier
a.cc:7:1: error: extended character 「 is not valid in an identifier
    7 | 残すレンガの個数が最大の「いい砕き方」を探す上で、i 番目のレンガは砕かないと仮定しても問題
      | ^
a.cc:7:1: error: extended character 」 is not valid in an identifier
a.cc:7:1: error: extended character 、 is not valid in an identifier
a.cc:8:1: error: extended character 。 is not valid in an identifier
    8 | ありません。
      | ^
a.cc:9:1: error: extended character 、 is not valid in an identifier
    9 | 同様の考え方をすると、i 番目のレンガより右にあるレンガの中に 2 が書かれたものが存在してい
      | ^
a.cc:10:1: error: extended character 、 is not valid in an identifier
   10 | れば、そのうち最も左にあるものは砕かずに残すと仮定することが可能です。
      | ^
a.cc:10:1: error: extended character 。 is not valid in an identifier
a.cc:11:1: error: extended character 、 is not valid in an identifier
   11 | この貪欲的なアプローチを繰り返していくことで、残すレンガの個数が最大の「いい砕き方」を見
      | ^
a.cc:11:1: error: extended character 「 is not valid in an identifier
a.cc:11:1: error: extended character 」 is not valid in an identifier
a.cc:12:1: error: extended character 。 is not valid in an identifier
   12 | つけることができます。
      | ^
a.cc:13:1: error: extended character 、 is not valid in an identifier
   13 | 組合せ最適化問題を解く際に、ある要素を選んで損をすることがないので、その要素を選ぶと仮定
      | ^
a.cc:13:1: error: extended character 、 is not valid in an identifier
a.cc:14:1: error: extended character 、 is not valid in an identifier
   14 | して探索空間を小さくする、というアイデアは、競技プログラミングにおける貪欲法で典型的です。​#include<bits/stdc++.h>
      | ^
a.cc:14:1: error: extended character 、 is not valid in an identifier
a.cc:14:1: error: extended character 。 is not valid in an identifier
a.cc:14:91: error: stray '#' in program
   14 | して探索空間を小さくする、というアイデアは、競技プログラミングにおける貪欲法で典型的です。​#include<bits/stdc++.h>
      |                                                                                           ^
a.cc:1:1: error: '\U00004ee5\U00004e0b\U00003001\U0000300c\U00003059\U0000306c\U00003051\U00003055\U00003093\U0000304c\U00006e80\U00008db3\U00003059\U0000308b\U000030ec\U000030f3\U000030ac\U0000306e\U00007815\U0000304d\U000065b9\U0000300d\U00003092\U0000300c\U00003044\U00003044\U00007815\U0000304d\U000065b9\U0000300d\U00003068\U00008a00\U00003044\U0000307e\U00003059\U00003002' does not name a type
    1 | 以下、「すぬけさんが満足するレンガの砕き方」を「いい砕き方」と言います。
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a.cc: In function 'int main()':
a.cc:20:3: error: 'cin' was not declared in this scope
   20 |   cin>>n;
      |   ^~~
a.cc:34:5: error: 'cout' was not declared in this scope
   34 |     cout<<-1<<endl;
      |     ^~~~
a.cc:34:15: error: 'endl' was not declared in this scope
   34 |     cout<<-1<<endl;
      |               ^~~~
a.cc:36:5: error: 'cout' was not declared in this scope
   36 |     cout<<res<<endl;
      |     ^~~~
a.cc:36:16: error: 'endl' was not declared in this scope
   36 |     cout<<res<<endl;
      |                ^~~~