Problem:
MathJax.Hub.Config({
tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}
});

A: 秤 / Steelyard

問題文

情太くんは長さ $2L$ の棒を使って下の図のような秤を作った．

棒には等間隔に $2L+1$ 個の穴があけられ，左から順に $-L, -L+1, \cdots, -1, 0, 1, \cdots, L-1, L$ という番号が付けられている．そして $0$ 番の穴の場所を天井から紐で吊るしてある．

情太くんは，秤の穴に $N$ 個のおもりを吊るした．$i$ 番目のおもりを吊るした穴の番号は $x_i$ で，おもりの重さは $w_i$ である．おもりが $1$ つも吊るされない穴や，複数のおもりが吊るされる穴も存在しうる．

情太くんが吊るしたおもりによっては，秤が傾いているかもしれない．姉の立子さんは，追加でいくつかの重りを吊るすことで秤を水平にしたい (おもりの座標と重さ積の総和が $0$ になるとき秤は水平になる)．条件を満たすおもりの吊るし方を $1$ つ出力しなさい．候補が複数ある場合はどれを出力してもよい．

入力

$L$

$N$

$x_1 \ w_1$

$\vdots$

$x_N \ w_N$

入力の制約

$1 \leq L \leq 30$

$1 \leq N \leq 30$

$|x_i| \leq L$

$1 \leq w_i \leq 30$

全て整数

出力

答えは次のような形式で出力せよ．
$1$ 行目の $N’$ は立子さんが吊るしたおもりの数である．
$1+i$ 行目の $x_i’, w_i’$ は，それぞれ立子さんが吊るしたおもりの位置と重さである．

$N'$

$x_1' \ w_1'$

$\vdots$

$x_N' \ w_N'$

出力の制約

立子さんが追加で吊り下げるおもりは，以下の条件を満たす必要がある.

$0 \leq N' \leq 50000$

$|x_i'| \leq L$

$1 \leq w_i' \leq 50000$

全て整数

サンプル

サンプル入力1

3
3
1 1
2 1
3 1

サンプル出力1

1
-3 2

他にも，例えば以下のような出力も正解として扱われる.

2
-3 1
-3 1

これらを図示すると次のようになる．

サンプル入力2

3
3
1 1
0 2
-1 3

サンプル出力2

1
2 1

サンプル入力3

10
4
1 2
2 3
-7 1
-1 1

サンプル出力3

0

秤は最初から釣り合っていることもある．

Solution in C (judge verdict: Time Limit Exceeded)

#include<stdio.h>
int main(void)
{
    int L,N,x,w,i,j,kake,sum=0,a,b,c,y;
    scanf("%d%d",&L,&N);
    for(i=0;i<N;i++){
        for(i=0;i<N;i++){
            scanf("%d%d",&x,&w);
            kake = x*w;
            sum += kake;
        }
    }
    if(sum == 0) printf("%d",sum);
    else {
    j = 0-sum;
    while(1){
      y = L-(2*L);
      a = j%y;
      b = y;
      y--;
      if(a == 0) break;
    }
    c = j/b;
    printf("%d\n%d %d\n",1,b,c);
    }
    return 0;
}