Problem:
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
秤は最初から釣り合っていることもある．

Submitted solutions:

code_snippet: #include <iostream>
#include <vector>
using namespace std;


int main(void){
    long long L,N;
    long long weight=0;

    cin >> L >> N;
    for(int i=0;i<N;i++){
        long long x,w;
        cin >> x >> w;
        weight += x*w;
    }

    if(weight==0){
        cout << 0 << endl;
    }else if(weight>0){
        cout << weight << endl;
        for(int i=0;i<weight;i++){
            cout << -1 << " " << 1 << endl;
        }
    }else{
        cout << -weight << endl;
        for(int i=0;i<-weight;i++){
            cout << 1 << " " << 1 << endl;
        }
    }

    return 0;
}
accuracy: 1
time_ms: 20
memory_kb: 3440
final_rank: 4

code_snippet: #include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cctype>
#include<math.h>
#include<string>
#include<string.h>
#include<stack>
#include<queue>
#include<vector>
#include<utility>
#include<set>
#include<map>
#include<stdlib.h>
#include<iomanip>

using namespace std;

#define ll long long
#define ld long double
#define EPS 0.0000000001
#define INF 1e9
#define LINF (ll)INF*INF
#define MOD 1000000007
#define rep(i,n) for(int i=0;i<(n);i++)
#define loop(i,a,n) for(int i=a;i<(n);i++)
#define all(in) in.begin(),in.end()
#define shosu(x) fixed<<setprecision(x)

#define int ll //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

typedef vector<int> vi;
typedef vector<string> vs;
typedef pair<int,int> pii;
typedef vector<pii> vp;

int gcd(int a, int b){
    if(b==0) return a;
    return gcd(b,a%b);
}
int lcm(int a, int b){
    return a/gcd(a,b)*b;
}

signed main(void) {
    int l,n;
    cin >> l >> n;
    int t = 0;
    rep(i,n){
        int x,w;
        cin >> x >> w;
        t += x*w;
    }
    t *= -1;
    if(t > 0){
        cout << t << endl;
        rep(i,t)cout << "1 1" << endl;
    }else{
        cout << abs(t) << endl;
        rep(i,abs(t))cout << "-1 1" << endl;
    }
}
accuracy: 1
time_ms: 20
memory_kb: 3104
final_rank: 2

code_snippet: #include "bits/stdc++.h"
#include<unordered_map>
#include<unordered_set>
#pragma warning(disable:4996)
using namespace std;
using ld = long double;
const ld eps = 1e-9;

//// < "d:\d_download\visual studio 2015\projects\programing_contest_c++\debug\a.txt" > "d:\d_download\visual studio 2015\projects\programing_contest_c++\debug\b.txt"


int main() {
	int L, N; cin >> L >> N;
	int sum = 0;
	for (int i = 0; i < N; ++i) {
		int x, w; cin >> x >> w;
		sum += x*w;
	}
	vector<pair<int, int>>anss;
	
		if (sum > 0) {
			for (int i = 0; i < sum; ++i) {
				anss.push_back(make_pair(-1, 1));
			}
		}
		else {
			for (int i = 0; i < -sum; ++i) {
				anss.push_back(make_pair(1, 1));
			}
			sum = -sum;
		}
	
	cout << sum << endl;
	for (int i = 0; i < anss.size(); ++i) {
		cout << anss[i].first << " " << anss[i].second << endl;
	}
	return 0;
}
accuracy: 1
time_ms: 20
memory_kb: 3248
final_rank: 3

code_snippet: #include<iostream>
using namespace std;

int abs(int a){
  return ((a > 0) ? (a) : (-a));
}

int main(){
  int L;
  int N;
  int sum=0;
  cin>>L>>N;
  for(int i=0;i<N;i++){
    int x,w;
    cin>>x>>w;
    sum += x*w;
  }
  int sign=((sum > 0)?(-1):(1));
  cout<<abs(sum)<<endl;
  for(int i=0,size=abs(sum);i<size;i++){
    cout<<sign<<' '<<1<<endl;
  }
  return 0;
}
accuracy: 1
time_ms: 50
memory_kb: 1160
final_rank: 4

code_snippet: #include<bits/stdc++.h>
#define rep(i,n) for(int i=0;i<n;++i)
#define FOR(i,a,b) for(int i=a;i<=b;++i)
#define LL long long
#define Fi first
#define Se second
using namespace std;
static const LL INF = 1LL<<61LL;
typedef pair<int,int> PII;

//PII V[100];
int N,L;
int Le,Ri;
int x,w;

int main(){
    cin>>L>>N;
    rep(i,N){
        cin>>x>>w;
        if(x>0)Ri+=abs(x*w);
        else if(x<0)Le+=abs(x*w);
        else if(x==0)continue;
    }
    if(Le<Ri){
        cout<<Ri-Le<<endl;
        rep(i,Ri-Le){
            cout<<-1<<" "<<1<<endl;
        }
    }
    else if(Le>Ri){
        cout<<Le-Ri<<endl;
        rep(i,Le-Ri){
            cout<<1<<" "<<1<<endl;
        }
    }
    else cout<<0<<endl;
}
accuracy: 1
time_ms: 30
memory_kb: 1160
final_rank: 1