結果
問題 | No.177 制作進行の宮森あおいです! |
ユーザー |
![]() |
提出日時 | 2019-11-22 04:22:56 |
言語 | C#(csc) (csc 3.9.0) |
結果 |
AC
|
実行時間 | 30 ms / 2,000 ms |
コード長 | 3,478 bytes |
コンパイル時間 | 2,508 ms |
コンパイル使用メモリ | 108,288 KB |
実行使用メモリ | 18,304 KB |
最終ジャッジ日時 | 2024-10-11 02:28:39 |
合計ジャッジ時間 | 2,538 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 13 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System;using System.Collections.Generic;using System.Collections;using System.Collections.Specialized;using System.Linq;using System.Text;using System.IO;using System.Reflection;using static System.Math;using System.Numerics;static class Program{const int mod=(int)1e9+7;static void Main(){Sc sc=new Sc();var w=sc.I;var n=sc.I;var a=sc.Ia2;var m=sc.I;var b=sc.Ia2;int g=n+m+2;var fl=new Flow(g+1);for(int i = 1,k=0;i<=m;i++) {var e=sc.Ia;k=1;for(int j = 1;j<e.Length;j++) {while(k<e[j]){fl.Edge1(k,i+n,a[k]);k++;}k++;}while(k<=n){fl.Edge1(k,i+n,a[k]);k++;}fl.Edge1(i+n,g,b[i]);}for(int i = 1;i<=n;i++) {fl.Edge1(g-1,i,a[i]);}Console.WriteLine("{0}",fl.Ff2(g-1,g)>=w?"SHIROBAKO":"BANSAKUTSUKITA");}}public class Flow{public List<int>[] li;private int[] b2;private int[][] h;private int n,ans,gl;public Flow(int n){this.n=n;li=new List<int>[n];h=new int[n][];for(int i=0;i<n;i++){li[i]=new List<int>();h[i]=new int[n];}}public void Edge1(int a,int b,int c){li[a].Add(b);li[b].Add(a);h[a][b]=c;}public int Ff2(int st,int gl){this.gl=gl;ans=0;int z=1;while(z>0){b2=new int[n];z=Fu2(st,int.MaxValue);ans+=z;}return ans;}private int Fu2(int a,int p){if(a==gl){return p;}int u=0;b2[a]|=1;for(int i=0;i<li[a].Count&&p>u;i++){if(b2[li[a][i]]==0&&h[a][li[a][i]]!=0){int z=Fu2(li[a][i],Min(p-u,h[a][li[a][i]]));h[a][li[a][i]]-=z;h[li[a][i]][a]+=z;u+=z;}}b2[a]&=-2;if(u==0){b2[a]=2;}return u;}}public class Sc{public int I{get{return int.Parse(Console.ReadLine());}}public long L{get{return long.Parse(Console.ReadLine());}}public double D{get{return double.Parse(Console.ReadLine());}}public string S{get{return Console.ReadLine();}}public int[] Ia{get{return Array.ConvertAll(Console.ReadLine().Split(),int.Parse);}}public long[] La{get{return Array.ConvertAll(Console.ReadLine().Split(),long.Parse);}}public double[] Da{get{return Array.ConvertAll(Console.ReadLine().Split(),double.Parse);}}public string[] Sa{get{return Console.ReadLine().Split();}}public object[] Oa{get{return Console.ReadLine().Split();}}public int[] Ia2{get{return Array.ConvertAll(("0 "+Console.ReadLine()+" 0").Split(),int.Parse);}}public int[] Ia3(int a){return Array.ConvertAll((a.ToString()+" "+Console.ReadLine()).Split(),int.Parse);}public int[] Ia3(bool a,int b,bool c,int d){return Array.ConvertAll(((a?b.ToString()+" ":"")+Console.ReadLine()+(c?" "+d.ToString():"")).Split(),int.Parse);}public long[] La2{get{return Array.ConvertAll(("0 "+Console.ReadLine()+" 0").Split(),long.Parse);}}public long[] La3(int a){return Array.ConvertAll((a.ToString()+" "+Console.ReadLine()).Split(),long.Parse);}public long[] La3(bool a,int b,bool c,int d){return Array.ConvertAll(((a?b.ToString()+" ":"")+Console.ReadLine()+(c?" "+d.ToString():"")).Split(),long.Parse);}public T[] Arr<T>(int n,Func<T> f){var a=new T[n];for(int i=0;i<n;i++){a[i]=f();}return a;}public T[] Arr<T>(int n,Func<int,T> f){var a=new T[n];for(int i=0;i<n;i++){a[i]=f(i);}return a;}public T[] Arr<T>(int n,Func<string[],T> f){var a=new T[n];for(int i=0;i<n;i++){a[i]=f(Console.ReadLine().Split());}return a;}public T[] Arr<T>(int n,Func<int,string[],T> f){var a=new T[n];for(int i=0;i<n;i++){a[i]=f(i,Console.ReadLine().Split());}return a;}}