Problem:

ねこのあな

　
あなたの家の近所には多くの猫が出入りする横穴があります。中は行き止まりで通り抜けることはできませんが、近所の猫が全部入れるくらいの奥行きがあります。穴の幅は猫がちょうど収まるくらいなので、先に入った猫を後から入った猫が押しのけて奥に向かうことはできません。また、先に入った猫が、後から入ってきた猫を押しのけて出口から出ることもできません。

  猫好きのあなたは横穴に出入りする猫を順番に記録していきました。記録をはじめたときは横穴の中には一匹も猫はいませんでしたが、やがて猫たちは横穴への出入りを始めました。同じ猫が何度も出入りすることもありました。
  

  記録を終えたあなたは、正しく記録できたかプログラムを書いてチェックすることにしました。
  

  横穴に出入りした猫のリストが与えられる。リストを先頭から順に見ていったとき、それより後ろを見なくても誤りと判断できる最初の位置を求めるプログラムを作成せよ。ただし、猫は100匹いて、1から100までの番号が与えられているものとする。

入力

  入力は以下の形式で与えられる。

$L$
$c_1$ $c_2$ ... $c_L$

１行目に横穴に出入りした猫のリストの長さ$L$ ($1 \leq L \leq 1000$)が与えられる。続く１行に、$i$番目に横穴に出入りした猫の情報$c_i$ ($-100 \leq c_i \leq 100$, ただし$c_i≠0$)が与えられる。ただし、$i$番目に出入りした猫の番号が$a$で、その猫が横穴に入ったときは$c_i=a$、横穴から出たときは$c_i=-a$である。

出力

  リストを先頭から順に見ていったとき、それより後ろを見なくても誤りと判断できる最初の位置を１行に出力する。誤りがない場合は、「OK」を１行に出力する。

入出力例

入力例１

4
1 2 -3 -1

出力例１

3

入力例２

6
2 1 2 -2 -1 -2

出力例２

3

入力例３

5
2 1 -1 3 -3

出力例３

OK



Sample input:
4
1 2 -3 -1


Sample output:
3

Submission status: Accepted

Solution code:
n = int(input())
lst = list(map(int, input().split()))

stack = []
ans = 'OK'
for i in range(n) :
    x = lst[i]
    if x > 0 :
        if x not in stack :
            stack.append(x) 
        else :
            print(i+1)
            ans = 'NG'
            break
    else :
        if len(stack) == 0 or stack[-1] != -x :
            print(i+1)
            ans = 'NG'
            break
        else :
            del stack[-1]
if ans == 'OK' :
    print(ans)

Submission status: Accepted

Solution code:
L = int(input())
C = list(map(int, input().split()))
A = []
for i in range(len(C)):
	if C[i]>0:
		if A.count(C[i]):
			print(i+1)
			exit(0)
		else:
			A.append(C[i])
	else:

		if len(A)==0 or A[len(A)-1]!=abs(C[i]):
			print(i+1)
			exit(0)
		else:
			del(A[len(A)-1])
print('OK')

Submission status: Accepted

Solution code:
N = int(input())
a = list(int(x) for x in input().split())
plus = []
minus = []
plus = plus[::-1]
answer ="OK"
for i in range(N):
  if a[0] < 0:
    answer = i +1
    break
    
  if a[i] > 0 and not(a[i] in plus):
    plus.append(a[i])
  elif a[i] < 0 and not(a[i] in minus):
    if (-(a[i]) in plus):
      minus.append(a[i])
      if (len(plus)-1) -plus.index(-(a[i])) == minus.index(a[i]):
        del minus[minus.index(a[i])]
        del plus[plus.index(-(a[i]))]
      else:
        answer = i+1
        break
    else:
      answer = i+1
      break
  else:
    answer = i+1
    break
print(answer)

Submission status: Accepted

Solution code:
l = int(input())
c = list(map(int, input().split()))

from collections import deque

def sign(n):
    if n<0: return -1
    if n>0: return 1
    return 0

ans = -1
neko = set()
q = deque()
j = 0
for i in c:
    if sign(i) == 1:
        if i in neko:
            ans = j
            break
        q.append(i)
        neko.add(i)
    else:
        if len(q) > 0:
            if -q.pop() != i or -i not in neko:
                ans = j
                break
            neko.remove(-i)
        else:
            ans = j
            break

    j += 1

if ans == -1:
    print("OK")
else:
    print(ans + 1)

Submission status: Accepted

Solution code:
# coding: utf-8
# Your code here!

cats = [0 for i in range(101)]
stack = []

L = int(input())
c = [int(i) for i in input().split()]

ans = -1
for i in range(L):
    if c[i] > 0:
        if cats[c[i]] == 1:
            ans = i + 1
            break
        else:
            cats[c[i]] = 1
            stack.append(c[i])
    else:
        if cats[-c[i]] == 0:
            ans = i + 1
            break
        else:
            cats[-c[i]] = 0
            if(stack.pop() != -c[i]):
                ans = i + 1
                break
if ans < 0:
    print("OK")
else:
    print(ans)

Submission status: Accepted

Solution code:
L = int(input())

cs = list(map(int, input().split()))

cave = []

cats = [0] * 110

for i, c in enumerate(cs):
    if c > 0 and cats[c] == 0:
        cave.append(c)
        cats[c] = 1
    elif c < 0 and cats[-c] == 1 and cave[-1] == -c:
        cave.pop()
        cats[-c] = 0
    else:
        print(i+1)
        exit()
    # print(cave)
    # print(cats[:10])

print("OK")

Submission status: Accepted

Solution code:
if __name__ == '__main__':

	n = int(input())
	A = list(map(int,input().split()))
	B = []

	for i,j in enumerate(A):
		if j > 0:
			if j not in B:
				B.append(j)
			else:
				print(i+1)
				break

		else:
			if len(B) != 0:
				p = B[-1]
				if p != abs(j):
					print(i+1)
					break
				else:
					B.pop(-1)
			else:
				print(i+1)
				break

	else:
		print("OK")

Submission status: Accepted

Solution code:
from collections import deque
L = int(input())
d = deque()
d_set = set()
clist = list(map(int, input().split()))
for i in range(L):
    c = clist[i]
    if c > 0:
        if c in d_set:
            print(i+1)
            break
        d.append(c)
        d_set.add(c)
    else:
        c *= -1
        if not d or d.pop() != c:
            print(i+1)
            break
        d_set.remove(c)
else:
    print("OK")

Submission status: Accepted

Solution code:
n = int(input())
a = [int(s) for s in input().split()]
memory = []
flag = False
for i in range(n):
    if a[i] > 0:
        if a[i] in memory:
            print(i+1)
            flag = True
            break
        else:
            memory.append(a[i])
    else:
        if len(memory) > 0 and memory[-1] == abs(a[i]):
            memory.pop()
        else:
            print(i+1)
            flag = True
            break

if flag == False:
    print("OK")

Submission status: Accepted

Solution code:
input()#入力１
l_m = [int(i) for i in input().split()]#入力２[]コピペで数列化(整数i)
l_t = []#空のリストを作る[]
ret = 0#返された情報を表示する形式を作る
for index,i in enumerate(l_m):#forでifの計算式をループ処理させるenuでインデックス番号（要素数）を取得
    if i > 0:#プラスの時
        if not i in l_t:#l_tの中にiがないとき
            l_t.append(i)#l_tに送る
        else:#おかしいの
            ret = index + 1#おかしい瞬間を現在の要素数+1してretで送る
            break
    elif i < 0:#マイナスの時
        
        if len(l_t) > 0 and l_t[-1] == - i:#lenでリスト内要素数を取得l_tにiが最後尾[-1]にあるとき
            l_t.pop(-1)#l_tの最後尾を消す
        else:#おかしいの
            ret = index + 1#おかしい瞬間を現在の要素数+1してretで送る
            break
if ret == 0:#retが０の時はＯＫを出力
    print("OK")
else:#それ以外は弾かれた瞬間+1の要素数=retで出力
    print(ret)

Submission status: Accepted

Solution code:
input()
n = [int(i) for i in input().split()]
l = []
ret = 0
for index, i in enumerate(n):
    if i > 0:
        if i in l:
            ret = index + 1
            break
        l.append(i)
    else:
        try:
            if l.pop(-1) != abs(i):
                ret = index + 1
                break
        except:
            ret = index + 1
            break
if ret == 0:
    print('OK')
else:
    print(ret)

Submission status: Accepted

Solution code:
L = int(input())
C = list(map(int, input().split()))

cats = set()
cave = []

for i, c in enumerate(C, 1):
    if c > 0:
        if c not in cats:
            cats.add(c)
            cave.append(c)
        else:
            print(i)
            exit()
    else:
        c = abs(c)
        if len(cave) > 0 and cave[-1] == c:
            cats.remove(c)
            cave.pop(-1)
        else:
            print(i)
            exit()

print('OK')

Submission status: Accepted

Solution code:
L = int(input())
c = [int(x) for x in input().split()]
cat, row, flag = [0]*101, [], 1
for i,j in enumerate(c):
    if j > 0 and cat[j] == 0:
        row.append(j)
        cat[j] = 1
    elif j < 0 and cat[-j] == 1 and row[-1] == -j:
        row.pop()
        cat[-j] = 0
    else:
        flag = 0
        break
if flag: print('OK')
else: print(i+1)

Submission status: Accepted

Solution code:
a = int(input())
b = list(map(int,input().split()))
cave = []
for i in range(a):
    cat = b[i]
    if cat > 0:
        if cat in cave:
            print(i+1)
            break
        else:
            cave.append(cat)
    else:
        if -(cat) in cave:
            if -(cat) == cave[-1]:
                cave.remove(-(cat))
            else:
                print(i+1)
                break
        else:
            print(i+1)
            break
    if i + 1 == a:
        print("OK")

Submission status: Accepted

Solution code:
L = int(input())
a = list(map(int, input().split()))
b = []
flag = 0
for i in range(L):
    if a[i] > 0:
        if a[i] in b:
            print(i+1)
            flag = 1
            break
        else:
            b.append(a[i])
    else:
        if len(b) > 0 and b[-1] == -a[i]:
            b.pop()
        else:
            print(i+1)
            flag = 1
            break
if flag == 0:
    print('OK')

Submission status: Accepted

Solution code:
n = int(input())
cats = list(map(int, input().split()))

hole = []
p = "OK"

for i in range(n):
    if cats[i] < 0:
        if len(hole)==0 or cats[i] != -1*hole[-1]:
            p = str(i+1)
            break
        else:
            hole.pop()
    else:
        if cats[i] in hole:
            p = str(i+1)
            break
        else:
            hole.append(cats[i])

print(p)

Submission status: Accepted

Solution code:
n, *a = map(int, open(0).read().split())
stack = []
isOK = 0
for i in range(n):
    if a[i]>0:
        if a[i] in stack: break
        stack.append(a[i])
    else:
        if not stack: break
        if -a[i] != stack.pop(): break
else: isOK = 1
print("OK" if isOK else i+1)

Submission status: Accepted

Solution code:
n = int(input())
lis = list(map(int,input().split()))
now = []
key = 0
cat = [0 for i in range(101)]
for i in range(n):
  if lis[i] > 0:
    now.append(lis[i])
    cat[lis[i]] += 1
    if cat[lis[i]] > 1:
      print(i+1)
      key = 1
      break
  else:
    try:
      num = now.pop(-1)
      cat[num] -= 1
      if lis[i]*(-1) != num:
        print(i+1)
        key = 1
        break
    except:
      print(i+1)
      key = 1
      break
if key == 0:print("OK")

Submission status: Accepted

Solution code:
l=int(input())
c=list(map(int,input().split()))
ans='OK'
cat=[]
for i in range(l):
    if c[i]>0:
        if c[i] in cat:
            ans=i+1
            break
        else:
            cat.append(c[i])
    else:
        if len(cat)==0:
            ans=i+1
            break
        elif abs(c[i])!=cat[-1]:
            ans=i+1
            break
        else:
            cat.pop(-1)
print(ans)