VK Cup 2017 - Qualification 1
はい。
https://codeforces.com/contest/769
A. Year of University Entrance
ざっくりと大意
・大学では入学年によってそれぞれグループが作られる。
・負でない一意に定まるx以下の差があるグループすべてに参加する。
・Igorが参加した全てのグループが与えられるので、 Igorの入学年を出力する。
Python3
n=int(input()) l=[int(i) for i in input().split()] l.sort() print(l[n//2])
問題文がさっぱりわからない。xも入学年もさっぱりわからないけど、制限でnが必ず奇数になることが保証されててサンプルから推定で中央の値出せばいいかもしれない気がしてお試し提出からAC。でも問題文の意味はわかってません。
B. News About Credit
ざっくりと大意
・nは総人数。aはそれぞれの人がメッセージ送信可能な件数。送信は1番目から始まる。
・メッセージが全員に送信できるか?出来ない場合は-1を出力。出来るなら送信の合計件数と送信元と送信先を出力。
・件数は最小でなくてもよい。解答は複数パターンあるウチのいずれかを出力すればよい。
Python3
n=int(input()) l=[int(i) for i in input().split()] k=[0]*n k[0]=1 m=[1,1] ans=chk=0 if l[0]==0 or sum(l)+1<n: print(-1) exit() print(n-1) for a,i in enumerate(l): t=i if all(k): break for x in range(m[0],n): if t==0: break if l[x]>0 and k[x]==0: k[x]=1 m[0]=x t-=1 print(a+1, x+1) if t==0: continue for x in range(m[1],n): if t==0: break if k[x]==0: k[x]=1 m[1]=x t-=1 print(a+1, x+1)
1番目の人の送信可能件数が0か、全体の件数がn-1より小さいと全員には送信出来ない。全員に送信出来そうならどこまで送信したかを記録しつつ、送信可能件数が1件以上の人を優先して送信先にしていく。端までチェックして送信可能件数が余ったら0の人にも送ったりする、でなんとかなります。多分。