結果
| 問題 | 
                            No.1890 Many Sequences Sum Queries
                             | 
                    
| ユーザー | 
                             kokatsu
                         | 
                    
| 提出日時 | 2022-11-02 22:24:07 | 
| 言語 | D  (dmd 2.109.1)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 71 ms / 2,000 ms | 
| コード長 | 522 bytes | 
| コンパイル時間 | 3,943 ms | 
| コンパイル使用メモリ | 213,468 KB | 
| 実行使用メモリ | 6,944 KB | 
| 最終ジャッジ日時 | 2024-06-22 16:37:07 | 
| 合計ジャッジ時間 | 4,491 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge2 / judge4 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 1 | 
| other | AC * 25 | 
ソースコード
import std;
void main() {
    long N, Q;
    readf("%d %d\n", N, Q);
    auto A = readln.chomp.split.to!(long[]);
    long len = A.sum, pos;
    auto B = new long[](len);
    foreach (a; A) {
        foreach (i; 1 .. a+1) B[pos++] = i;
    }
    auto C = B.cumulativeFold!"a + b".array.assumeSorted;
    foreach (_; 0 .. Q) {
        long S;
        readf("%d\n", S);
        auto ub = C.upperBound(S-1);
        long res = -1;
        if (!ub.empty) res = len - ub.length.to!long + 1;
        res.writeln;
    }
}
            
            
            
        
            
kokatsu