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; }