Submission #5415907
Source Code Expand
#include<iostream>
#include<stdio.h>
#include<vector>
#include<algorithm>
#include<set>
#include<string>
#include<string.h>
#include<complex>
#include<math.h>
#include<queue>
#include<time.h>
using namespace std;
typedef long long int llint;
typedef vector<int> vint;
typedef vector<llint> vllint;
typedef vector<pair<int, int>> vpint;
typedef vector<pair<llint, llint>> vpllint;
#define rep(i,n) for(int i=0;i<n;i++)
#define drep(i,n) for(int i=n-1;0<=i;i--)
#define yes(ans) if(ans)cout<<"yes"<<endl;else cout<<"no"<<endl;
#define Yes(ans) if(ans)cout<<"Yes"<<endl;else cout<<"No"<<endl;
#define YES(ans) if(ans)cout<<"YES"<<endl;else cout<<"NO"<<endl;
#define POSSIBLE(ans) if(ans)cout<<"POSSIBLE"<<endl;else cout<<"IMPOSSIBLE"<<endl;
class UnionFind {
public:
//親の番号を格納する。親だった場合は-(その集合のサイズ)
vector<int> Parent;
//作るときはParentの値を全て-1にする
//こうすると全てバラバラになる
UnionFind(int N) {
Parent = vector<int>(N, -1);
}
//Aがどのグループに属しているか調べる
int root(int A) {
if (Parent[A] < 0) return A;
return Parent[A] = root(Parent[A]);
}
//自分のいるグループの頂点数を調べる
int size(int A) {
return -Parent[root(A)];//親をとってきたい
}
//AとBをくっ付ける
bool connect(int A, int B) {
//AとBを直接つなぐのではなく、root(A)にroot(B)をくっつける
A = root(A);
B = root(B);
if (A == B) {
//すでにくっついてるからくっ付けない
return false;
}
//大きい方(A)に小さいほう(B)をくっ付けたい
//大小が逆だったらひっくり返しちゃう。
if (size(A) < size(B)) swap(A, B);
//Aのサイズを更新する
Parent[A] += Parent[B];
//Bの親をAに変更する
Parent[B] = A;
return true;
}
};
//aとbの最大公約数を求めるよ
long long GCD(long long a, long long b) {
if (b == 0) return a;
else return GCD(b, a % b);
}
// 返り値: a と b の最大公約数
// ax + by = gcd(a, b) を満たす (x, y) が格納される
long long extGCD(long long a, long long b, long long& x, long long& y) {
if (b == 0) {
x = 1;
y = 0;
return a;
}
long long d = extGCD(b, a % b, y, x);
y -= a / b * x;
return d;
}
bool check(pair<int,int>a, pair<int,int>b) {
if (a.first == b.first) {
return a.second > b.second;
}
else {
return a.first < b.first;
}
}
int main() {
int n;
cin >> n;
vint a(n), b(n);
rep(i, n) {
cin >> a[i] >> b[i];
}
int ans = 0;
rep(i, n) {
a[i] = a[i] % b[i];
}
int cnt = 0;
drep(i, n) {
a[i] += cnt;
a[i] %= b[i];
if (a[i] == 0)a[i] = b[i];
cnt += b[i] - a[i];
}
cout << cnt << endl;
}
Submission Info
Submission Time |
|
Task |
A - Multiple Array |
User |
tRue |
Language |
C++14 (GCC 5.4.1) |
Score |
0 |
Code Size |
2707 Byte |
Status |
WA |
Exec Time |
87 ms |
Memory |
1024 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
0 / 300 |
Status |
|
|
Set Name |
Test Cases |
Sample |
s1.txt, s2.txt |
All |
01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, s1.txt, s2.txt |
Case Name |
Status |
Exec Time |
Memory |
01.txt |
WA |
80 ms |
1024 KB |
02.txt |
WA |
80 ms |
1024 KB |
03.txt |
WA |
84 ms |
1024 KB |
04.txt |
WA |
81 ms |
1024 KB |
05.txt |
WA |
80 ms |
1024 KB |
06.txt |
WA |
81 ms |
1024 KB |
07.txt |
AC |
57 ms |
1024 KB |
08.txt |
WA |
84 ms |
1024 KB |
09.txt |
AC |
58 ms |
1024 KB |
10.txt |
WA |
83 ms |
1024 KB |
11.txt |
AC |
57 ms |
1024 KB |
12.txt |
AC |
35 ms |
1024 KB |
13.txt |
WA |
57 ms |
1024 KB |
14.txt |
AC |
87 ms |
1024 KB |
15.txt |
AC |
1 ms |
256 KB |
16.txt |
AC |
1 ms |
256 KB |
s1.txt |
AC |
1 ms |
256 KB |
s2.txt |
AC |
1 ms |
256 KB |