ONLYSLIME/AOJ-CodeRank-Benchmark huggingface dataset:
Problem:
Greatest Common Divisor
Write a program which finds the greatest common divisor of two natural numbers
a
and
b
Input
a
and
b
are given in a line sparated by a single space.
Output
Output the greatest common divisor of
a
and
b
.
Constrants
1 ≤
a
,
b
≤ 10
9
Hint
You can use the following observation:
For integers
x
and
y
, if
x
≥
y
, then gcd(
x
,
y
) = gcd(
y
,
x
%
y
)
Sample Input 1
54 20
Sample Output 1
2
Sample Input 2
147 105
Sample Output 2
21

Submitted solutions:

code_snippet: #include <iostream>
using namespace std;

int main(){
    int x, y; cin >> x >> y;
    int d = 2;
    int gcd = 1;

    while(d <= x && d <= y){
        if (x % d == 0 && y % d == 0){
            x = x / d;
            y = y / d;
            gcd = gcd * d;
        }
        else d++;
    }
    cout << gcd << endl;
    return 0;
}
accuracy: 1
time_ms: 260
memory_kb: 3432
final_rank: 3

code_snippet: #include<iostream>
using namespace std;

int main(){
    int x, y, ans, temp, i;
    cin >> x >> y;
    if(x < y){
        temp = x;
        x = y;
        y = temp;
    }

    if(x == y) ans = x;
    else{
        x %= y;
        for(i = x; i >= 1; i--){
            if(x%i == 0 and y%i == 0){
                ans = i;
                break;
            }
        }
    }

    cout << ans << endl;
    return 0;
}
accuracy: 1
time_ms: 260
memory_kb: 3432
final_rank: 3

code_snippet: #include<iostream>
using namespace std;

int main(){
    int x, y, remain, ans, i;
    cin >> x >> y;
    
    if(x >= y){
        remain = x%y;
        if(remain == 0){
            ans = y;
        }
        else{
            for(i = remain-1; i >= 1; i--){
                if(remain%i == 0 and y%i == 0){
                    ans = i;
                    break;
                }
            }
        }
    }
    else{
        remain = y%x;
        if(remain == 0){
            ans = x;
        }
        else{
            for(i = remain-1; i >= 1; i--){
                if(remain%i == 0 and x%i == 0){
                    ans = i;
                    break;
                }
            }
        }
    }
    cout << ans << endl;
    return 0;
}
accuracy: 1
time_ms: 260
memory_kb: 3420
final_rank: 2

code_snippet: #include<iostream>
using namespace std;

int main(){
    int x, y, z, min, divisible, i;
    cin >> x >> y;

    if(x >= y){
        z = x % y;
        if(z == 0) divisible = y;
        else{
            if(y > z) min = z;
            else min = y;
            for(i = min; i >= 1; i--){
                if(y % i == 0 and z % i == 0){
                    divisible = i;
                    break;
                }
            }
        }
        cout << divisible << endl;
    }

    else{
        z = y % x;
        if(z == 0) divisible = y;
        else{
            if(x > z) min = z;
            else min = x;
            for(i = min; i >= 1; i--){
                if(x % i == 0 and z % i == 0){
                    divisible = i;
                    break;
                }
            }
        }
        cout << divisible << endl;
    }
    return 0;
}
accuracy: 1
time_ms: 250
memory_kb: 3424
final_rank: 1
Problem:
素数 II
素数というのは、1 よりも大きくそれ自身か 1 でしか割りきれない整数をいいます。例えば、2 は、2 と 1 でしか割り切れないので素数ですが、12 は、12 と 1 のほかに、2, 3, 4, 6 で割りきれる数なので素数ではありません。
整数
n
を入力したとき、
n
より小さい素数のうち最も大きいものと、
n
より大きい素数のうち最も小さいものを出力するプログラムを作成してください。
Input
複数のデータセットが与えられます。各データセットに
n
(3 ≤
n
≤ 50,000) が１行に与えられます。
データセットの数は 50 を超えません。
Output
各データセットに対して、
n
より小さい素数のうち最大のものと、
n
より大きい素数のうち最小のものを１つのスペースで区切って１行に出力して下さい。
Sample Input
19
3517
Output for the Sample Input
17 23
3511 3527

Submitted solutions:

code_snippet: #include <cstdio>
#include <algorithm>
#include <iostream>
#include <vector>
#include <string.h>
#include <math.h>
#include <time.h>
#include <stdlib.h>
using namespace std;



int main(){
	int d,arr[100000],count,ch;
	arr[0]=2;
	count =0;
	for(int i=3;i<=50100;i++){
		ch=0;
		for(int j=0;j<=count;j++){
			if(i%arr[j] == 0)ch=1;
		}
		if(ch == 0){
			count++;
			arr[count]=i;
		}
	}
	while(scanf("%d",&d) != EOF){
		for(int i=0;;i++){
			if(arr[i]==d){
				printf("%d %d\n",arr[i-1],arr[i+1]);
				break;
			}
			if(arr[i]>d){
				printf("%d %d\n",arr[i-1],arr[i]);
				break;
			}
		}
	}
		
	
	return 0;
}
accuracy: 1
time_ms: 300
memory_kb: 3220
final_rank: 2

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

vector<int> prime;

int main(void) {
	for(int i = 2;i < 60000;i++) {
		bool isPrime = true;
		for(auto e:prime) {
			if(i % e == 0) {
				isPrime = false;
				break;
			}
		}
		if(isPrime) prime.push_back(i);
	}
	int n;
	while(cin >> n) {
		auto eq = equal_range(prime.begin(),prime.end(),n);
		cout << *(eq.first-1) << " " << *(eq.second) << endl;
	}
}
accuracy: 1
time_ms: 40
memory_kb: 3048
final_rank: 1

code_snippet: #include<iostream>
using namespace std;

void prime(int a){
  int cnt1=a+1;
  int cnt2=a-1;
  bool is_prime[1000000];
  is_prime[0] = is_prime[1] = false;
  for(int i=2;i<1000000;i++){
    is_prime[i] = true;
  }
  for(int i=2;i*i<1000000;i++){
    if(is_prime[i]){
      for(int j=i*i;j<1000000;j+=i){
        is_prime[j] = false;
      }
    }
  }
  while(1){
    if(is_prime[cnt2]){
      cout << cnt2 << " ";
      break;
    }
    cnt2--;
  }

  while(1){
    if(is_prime[cnt1]){
      cout << cnt1 << endl;
      break;
    }
    cnt1++;
  }

}

int main(){
  while(1){
    int num;
    cin >> num;
    if(cin.eof())
      break;

    prime(num);
  }
  return 0;
}
accuracy: 1
time_ms: 20
memory_kb: 4052
final_rank: 3

code_snippet: #include<iostream>
#include<algorithm>
#include<vector>
#include<set>
#include<string>


int main() {
	int n;
	bool a;
	std::vector<int> prime;
	prime.emplace_back(2);
	for (int i = 3; i < 1000000; i += 2) {
		a = false;
		for (int j = 3; j <= std::sqrt(i); j += 2) {
			if (i%j == 0) {
				a = true;
			}
		}
		if (a == false) {
			prime.emplace_back(i);
		}
	}
	while (std::cin >> n) {
		int ans = 0;
		int low = 0, high = 0;
		for (int i = 0; i < prime.size(); i++) {
			if (prime[i] < n) {
				low = prime[i];
			}
			if (prime[i] > n) {
				high = prime[i];
				break;
			}
		}
		std::cout << low << " " << high << std::endl;
	}
}
accuracy: 1
time_ms: 900
memory_kb: 3264
final_rank: 4
Problem:
出口調査
あるデパートで買い物金額の出口調査を行いました。買い物金額のデータを入力とし、1 人あたりの平均買い物金額を計算し、出力するプログラムを作成してください。調査人数は、10 万人以下とし、一人あたりの買い物金額は 100 万円を超えないものとします。
Input
入力は以下の形式で与えられます。
n
v
1
v
2
:
v
n
1 行目に調査人数
n
、続く
n
行に
i
人目の買い物金額を表す整数
v
i
が与えられます。
Output
平均買い物金額（整数：小数点以下は切り捨て）を１行に出力してください。
Sample Input
6
12300
5600
33800
0
26495
52000
Output for the Sample Input
21699

Submitted solutions:

code_snippet: #include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,w=100000;
    cin>>n;
    double num,ans;
    cin>>ans;
    ans/=w;
    for(int i=1;i<n;i++){
        cin>>num;
        num/=w;
        ans+=num;
    }
    ans/=n;
    n=ans*w;
    cout<<n<<endl;
}
accuracy: 1
time_ms: 10
memory_kb: 1228
final_rank: 4

code_snippet: #include <iostream>
using namespace std;

int main(){
	long long sum=0;
	int n, num;
	cin>>n;
	for(int i=0; i<n; i++){
		cin>>num;
		sum+=num;
	}
	cout<<sum/n<<"\n";
	return 0;
}
accuracy: 1
time_ms: 10
memory_kb: 1160
final_rank: 1

code_snippet: #include <cstdio>
#include <algorithm>
#include <iostream>
#include <vector>
#include <string>
#include <cmath>
using namespace std;

int main(){
	int j;
	double a,s,n;
	cin >> n;
	for(int i=0;i<n;i++){
		cin >> a;
		s+=a/n;
	}
	j=s;
	cout << j << "\n";
	
	
return 0;
}
accuracy: 1
time_ms: 10
memory_kb: 1224
final_rank: 3

code_snippet: #include <stdio.h>
#include <iostream>
#include <algorithm>
#include <iomanip>
#include <map>
#include <fstream>
#include <sstream>
#include <math.h>
#include <queue>
#include <stack>
#include <math.h>
#include <string.h>


using namespace std;


int main(){
    double ans=0.0;
    int n;
    cin>>n;
    for(int i = 0; i < n; i++){
        double temp;
        cin>>temp;
        ans+=temp;
    }
    ans/=n;
    cout<<(int)ans<<endl;
}
accuracy: 1
time_ms: 10
memory_kb: 1228
final_rank: 4

code_snippet: #include <iostream>

using namespace std;

int main(){
  int n;
  double sum = 0.0,a;

  cin >> n;
  for(int i = 0 ; i < n ; i++){
    cin >> a;
    sum += a;
  }
  cout << (int)(sum/n) << endl;

  return 0;
}
accuracy: 1
time_ms: 10
memory_kb: 1228
final_rank: 4

code_snippet: #include <stdio.h>
#include <iostream>

using namespace std;

int main() {
	int a;
	int counter;
	double sum = 0;
	int kekka;

	cin >> counter;

	for (int i = 0; i < counter; i++) {
		cin >> a;
		sum += ((double)a / (double)counter);
	}

	kekka = (int)sum;

	cout << kekka << endl;
	return 0;
}
accuracy: 1
time_ms: 10
memory_kb: 1160
final_rank: 1
Problem:
理想の体型
肥満度を表す指数としてBMI（Body Mass Index）があります。BMIの値は以下の式で計算します。
BMI = 体重(kg) / (身長(m))
2
BMIの値が標準値に近いほど「理想の体型」と考えられます。そこで、BMIの標準値を 22 とした場合、対象者の情報を入力とし、最も「理想の体型」に近い人の情報を出力するプログラムを作成してください。
対象者の数を
n
とすると、各対象者には重複のないように1 以上
n
以下の整数値の受付番号
p
が振られています。
Input
複数のデータセットの並びが入力として与えられます。入力の終わりはゼロひとつの行で示されます。各データセットは以下の形式で与えられます。
n
p
1
h
1
w
1
p
2
h
2
w
2
:
p
n
h
n
w
n
１行目に対象者の人数
n
(
n
≤ 1000)、続く
n
行に
i
人目の対象者の受付番号
p
i
(1 ≤
p
i
≤
n
)、センチメートル単位の身長
h
i
(1 ≤
h
i
≤ 200)、キログラム単位の体重
w
i
(1 ≤
w
i
≤ 200) が与えられます。入力は全て整数で与えられます。
Output
データセットごとに「理想の体型」に最も近い人の受付番号（整数）を１行に出力します。最も「理想の体型」に近い人が二人以上いる場合は、受付番号の小さい方を出力することとします。
Sample Input
6
1 165 66
2 178 60
3 180 72
4 160 65
5 185 62
6 182 62
3
3 160 65
2 180 70
1 170 75
0
Output for the Sample Input
3
2

Submitted solutions:

code_snippet: #include<iostream>
#include<cstdlib>
#include<algorithm>
using namespace std;
typedef struct {
  int no;
  double BMI,abs;
}P;
int main(){
  int n,a,b,c;
  while(1){
    cin >> n;
    if(n==0)break;
    P temp;
    P sets[n];
    for(int i=0;i<n;i++){
      cin >> sets[i].no >> b >> c;

      sets[i].BMI=double(c)/((double)(b)/100.0*(double)(b)/100.0);
      if(sets[i].BMI<=22){
	sets[i].abs=22-sets[i].BMI;
      }else{
	sets[i].abs=sets[i].BMI-22;
      }
    }
    for(int i=0;i<n-1;i++){
      for(int j=n-1;j>i;j--){
	if(sets[j].abs<sets[j-1].abs){
	  temp=sets[j];
	  sets[j]=sets[j-1];
	  sets[j-1]=temp;
	}
      }
    }
    for(int i=0;i<n-1;i++){
      for(int j=n-1;j>i;j--){
	if(sets[j].abs==sets[j-1].abs && sets[j].no<sets[j-1].no){
	  temp=sets[j];
	  sets[j]=sets[j-1];
	  sets[j-1]=temp;
	}
      }
    }
    cout << sets[0].no << endl;
  }
}
accuracy: 1
time_ms: 10
memory_kb: 1180
final_rank: 1

code_snippet: #include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;

int main(){
	int n;
	while( cin >> n , n ){
		double BMI[1000001];
		for(int i=0 ; i < 1000001 ; i++ ){
			BMI[i] = -1;
		}

		for(int i=0 ; i < n ; i++ ){
			int id,h,w;
			cin >> id >> h >> w;
			BMI[id] = fabs( 22.0 - (double) w / ( (h/100.0)*(h/100.0) ) );
		}
		double m = 1000.0;
		for(int i=0 ; i < 1000001 ; i++ ){
			if( BMI[i] != -1 )
				m = min( m , BMI[i] );
		}
		for(int i=0 ; i < 1000001 ; i++ ){
			if( BMI[i] == m ){
				cout << i << endl;
				break;
			}
		}
	}
}
accuracy: 1
time_ms: 70
memory_kb: 0
final_rank: 1

code_snippet: #include<vector>
#include<list>
#include<algorithm>
#include<iostream>
#include<string>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
using namespace std;
int gcd(int a,int b){
  int i;
  if(a<b)
    swap(a,b);
  for(i=1;a%(b/i);)
    for(i++;b%i;i++);  
  return b/i;
}
long long lcm(int a,int b){
  return (long long)a*b/gcd(a,b);
}
int main(){
  int i;
  int n,b,h,w,bb,hh,ww;
  long long l;
  for(;;){
    cin>>n;
    if(n==0)
      break;
    cin>>bb>>hh>>ww;
    for(i=1;i<n;i++){
      cin>>b>>h>>w;
      l=lcm(hh*hh,h*h);
      if(llabs(ww*10000*l/hh/hh-l*22)>llabs(w*10000*l/h/h-l*22)){
	bb=b;
	hh=h;
	ww=w;
      }
    }
    cout<<bb<<endl;
  }
  return 0;
}
accuracy: 1
time_ms: 50
memory_kb: 868
final_rank: 3
Problem:
Reservation System
The supercomputer system L in the PCK Research Institute performs a variety of calculations upon request from external institutes, companies, universities and other entities. To use the L system, you have to reserve operation time by specifying the start and end time. No two reservation periods are allowed to overlap each other.
Write a program to report if a new reservation overlaps with any of the existing reservations. Note that the coincidence of start and end times is not considered to constitute an overlap. All the temporal data is given as the elapsed time from the moment at which the L system starts operation.
Input
The input is given in the following format.
a
b
N
s_1
f_1
s_2
f_2
:
s_N
f_N
The first line provides new reservation information, i.e., the start time
a
and end time
b
(0 ≤
a
<
b
≤ 1000) in integers. The second line specifies the number of existing reservations
N
(0 ≤
N
≤ 100). Subsequent
N
lines provide temporal information for the
i
-th reservation: start time
s_i
and end time
f_i
(0 ≤
s_i
<
f_i
≤ 1000) in integers. No two existing reservations overlap.
Output
Output "1" if the new reservation temporally overlaps with any of the existing ones, or "0" otherwise.
Sample Input 1
5 7
3
1 4
4 5
7 10
Sample Output 1
0
Sample Input 2
3 7
3
7 10
1 4
4 5
Sample Output 2
1

Submitted solutions:

code_snippet: #include<bits/stdc++.h>
#include <iostream>
using namespace std;
int main(void){
	int a,b,n,s[101],f[101],cnt=0;
	cin>>a>>b>>n;
	for(int i=0;i<n;i++){
		cin>>s[i];
	}
	for(int i=0;i<n;i++){
		cin>>f[i];
	}
	for(int i=a+1;i<b;i++){
		for(int j=0;j<n;j++){
		for(int k=s[i];k<f[i];k++){
			if(i==k){
				cnt=1;
				break;
		}
		}
	}
	}
	cout<<cnt<<endl;
	return 0;
}
accuracy: 0.03125
time_ms: 550
memory_kb: 3076
final_rank: 2

code_snippet: #include<bits/stdc++.h>
#include <iostream>
using namespace std;
int main(void){
	int a,b,n,s[101],f[101],cnt=0;
	cin>>a>>b>>n;
	for(int i=0;i<n;i++){
		cin>>s[i];
	}
	for(int i=0;i<n;i++){
		cin>>f[i];
	}
	for(int i=a+1;i<b;i++){
		for(int j=s[i];j<f[i];j++){
			if(i==j){
				cnt++;
				break;
		}
		}
	}
	cout<<cnt<<endl;
	return 0;
}
accuracy: 0.03125
time_ms: 370
memory_kb: 3116
final_rank: 3

code_snippet: #include<bits/stdc++.h>
#include <iostream>
using namespace std;
int main(void){
	int a,b,n,s[101],f[101],cnt=0;
	cin>>a>>b>>n;
	for(int i=0;i<n;i++){
		cin>>s[i];
	}
	for(int i=0;i<n;i++){
		cin>>f[i];
	}
	for(int i=a+1;i<b;i++){
		for(int j=s[i];j<f[i];j++){
			if(i==j){
				cnt++;
		}
		}
	}
	if(cnt>=1){
		cout<<1<<endl;
	}
	else {
		cout<<0<<endl;
	}
	return 0;
}
accuracy: 0.03125
time_ms: 300
memory_kb: 3112
final_rank: 1
Problem:
たしざんひきざん (Calculation Training)
square1001 君は E869120 君に、誕生日プレゼントとして二つの数字 $A$ と $B$ をプレゼントしました。
E869120 君はこの二つの数字を使って、計算トレーニングをすることにしました。
具体的には、E869120君は次の操作をちょうど $N$ 回これらの数に行います。
奇数回目の操作のとき、$A$ を $A-B$ で置き換える
偶数回目の操作のとき、$B$ を $A+B$ で置き換える
E869120君が $N$ 回の操作をした後、$A$ と $B$ の値がそれぞれいくつになっているか求めてください。
入力
入力は以下の形式で標準入力から与えられる。
$N$
$A$ $B$
出力
E869120君が $N$ 回の操作をした後の $A$ と $B$ の値を、この順に空白区切りで出力してください。
ただし、最後には改行を入れること。
制約
$1 \leq N \leq 1000000000000000000 \ (= 10^{18})$
$1 \leq A \leq 1000000000 \ (= 10^9)$
$1 \leq B \leq 1000000000 \ (= 10^9)$
入力は全て整数である。
入力例1
3
3 4
出力例1
-4 3
$(A, B)$ の値は $(3,4) → (-1,4) → (-1,3) → (-4,3)$ と変化します。
入力例2
8
6 9
出力例2
3 -6

Submitted solutions:

code_snippet: #include <iostream>
/*
N = num()
A,B = nums()
curA,curB = A,B
for i in range(N):
    if i % 2 == 0:#kisuu
        curA = curA - curB
    else:#guusuu
        curB = curA + curB
print(curA,curB)
*/
int main()
{
    long long N;
    int A,B;
    std::cin >> N;
    std::cin >> A >> B;
    int curA = A;
    int curB = B;
    
    for (int i=1;i<=N;i++)
    {
        if (i % 2 == 1) 
        {
            curA = curA - curB; 
            continue;
        }
        if (i % 2 == 0) 
        {
            curB = curA + curB;
            continue;
        }
    }
    std::cout << curA << " " << curB << std::endl;
}
accuracy: 0.07142857142857142
time_ms: 210
memory_kb: 3096
final_rank: 3

code_snippet: #include <iostream>
/*
N = num()
A,B = nums()
curA,curB = A,B
for i in range(N):
    if i % 2 == 0:#kisuu
        curA = curA - curB
    else:#guusuu
        curB = curA + curB
print(curA,curB)
*/
int main()
{
    long long N;
    int A,B;
    std::cin >> N;
    std::cin >> A >> B;
    int curA = A;
    int curB = B;
    for (int i=0;i<N;i++)
    {
        if (i % 2 == 0) curA = curA-curB;
        else curB = curA + curB;
    }
    std::cout << curA << " " << curB << std::endl;
}
accuracy: 0.07142857142857142
time_ms: 100
memory_kb: 3120
final_rank: 2

code_snippet: #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod = 1000000007;
const ll mod998 = 998244353;
const ll intmax = 2147483647;
const ll llmax = 9223372036854775807;
const char sp = ' ';

ll N, A, B;

int main() {
	cin >> N >> A >> B;
	for (int i = 1; i <= N; i++) {
		if (i & 1) {
			A = A - B;
		}
		else {
			B = A + B;
		}
	}
	cout << A << sp << B << endl;
}
accuracy: 0.07142857142857142
time_ms: 200
memory_kb: 3084
final_rank: 1