結果
問題 | No.607 開通777年記念 |
ユーザー |
![]() |
提出日時 | 2017-12-07 01:42:47 |
言語 | D (dmd 2.109.1) |
結果 |
AC
|
実行時間 | 107 ms / 2,000 ms |
コード長 | 1,080 bytes |
コンパイル時間 | 977 ms |
コンパイル使用メモリ | 102,236 KB |
実行使用メモリ | 24,460 KB |
最終ジャッジ日時 | 2024-06-12 22:51:32 |
合計ジャッジ時間 | 1,761 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 10 |
ソースコード
void main(){ import std.stdio, std.string, std.conv, std.algorithm; import std.random; int n, m; rd(n, m); auto d=new int[][](m, n); foreach(i; 0..m) d[i]=readln.split.to!(int[]); writeln(solve(n, m, d)?"YES":"NO"); } bool solve(int n, int m, int[][] d){ auto a=new int[](n); int tg=777; foreach(i; 0..m){ foreach(j; 0..n) a[j]+=d[i][j]; auto sum=0, l=0, r=0; while(r<n){ sum+=a[r++]; while(l<r && sum>tg) sum-=a[l++]; if(sum==tg) return true; } } return false; } bool greedy(int n, int m, int[][] d){ import std.algorithm.iteration:sum; auto a=new int[](n); foreach(i; 0..m){ foreach(j; 0..n) a[j]+=d[i][j]; foreach(l; 0..n)foreach(r; l..n){ auto s=sum(a[l..(r+1)]); if(s==777) return true; } } return false; } void rd(T...)(ref T x){ import std.stdio, std.string, std.conv; auto l=readln.split; assert(l.length==x.length); foreach(i, ref e; x){ e=l[i].to!(typeof(e)); } } void wr(T...)(T x){ import std.stdio; foreach(e; x) stderr.write(e, " "); stderr.writeln; }