WARush

SRMの結果とか、解けた問題のコードを書いていきます

Codeforces #177 Div2 A "Polo the Penguin and Segments"

問題

http://codeforces.com/contest/289/problem/A

2つの整数で表されるセグメント(区間)がN個与えられる。
[ L(1); R(1) ],[ L(2); R(2) ]...[ L(N); R(N) ]. ( L(i) <= R(i) )
このセットには区間が重なっているものはない。
いずれかのセグメント[ L; R ]を[ L-1; R ]または[ L; R+1 ]と、区間を1つ広げる操作ができる。

N個のセグメントのセット[ L(1); R(1) ],[ L(2); R(2) ]...[ L(N); R(N) ].の値は、
L(j) <= x <= R(j) ( 1 <= j <= N )を満たす整数xの数となる。

セグメントのセットの値をKで割り切れるようにするための、
最小の操作の回数を返せ。

制約

1 <= N, K <= 10^5
-10^5 <= Lの値 <= Rの値 <= 10^5



考えた事

最大のRを持つセグメントを[L;R+1]にすれば、
必ずセグメントのセットの値を1増やす事が出来る。


ソースコード

int main() {
    int N, K;
    cin >> N >> K;

    int sum = 0;
    for( int i = 0; i < N; i++ ){
        int l, r;
        cin >> l >> r;
        sum += r - l + 1;
    }

    if( sum % K == 0 ){
        cout << 0 << endl;
        return 0;
    }

    cout << (K - sum % K ) << endl;
    return 0;
}