Problem:
競り (Auction)
square1001君はとある競りを鑑賞していました。
競りとは、買い手が多数で品数に制限があるとき、高値を付けたものに買う権利を与える仕組みの取引です。
(新明解国語辞典第七版より)
ここでの競りのルールは以下の通りです。
1. 次の 2. ～ 6. を品物が尽きるまで繰り返す
2. 新たな品物を出し、客に見せる
3. 客のうちの 1 人が好きな値段を品物につける
4. 客のうちの 1 人が現在品物についている値段
よりも
高い値段をつける
5. 4. の行為を行う客がいなくなるまで 4. を繰り返す
6. 品物に一番高い値段を付けた客がそれを落札する
square1001君はこの競り中に品物につけられた値段を時間順に全て記録しました。
その記録によると、$N$ 回品物に値段がつけられ、つけられた値段は最初から順に $A_1, A_2, A_3, \dots, A_N$ です。
E869120君はこの競りで何個の品物が出品されたか気になっています。
square1001君が作ったリストから、この競りで出品された品物の個数としてありうる最小値と最大値を求めてください。
入力
入力は以下の形式で標準入力から与えられる。
$N$
$A_1$ $A_2$ $A_3$ $\cdots$ $A_N$
出力
この競りで出品された品物の個数としてありうる最小値と最大値をこの順で改行区切りで出力してください。
ただし、最後には改行を入れること。
制約
$1 \leq N \leq 100000 \ (= 10^5)$
$1 \leq A_i \leq 1000000000 \ (= 10^9)$
入力は全て整数である。
入力例1
5
8 6 9 1 20
出力例1
3
5
3 つの品物が順に、値段 8、値段 9、値段 20 で落札されたとき、品物の個数は最小値 3 となります。
入力例2
6
3 3 4 3 3 4
出力例2
4
6
入力例3
8
5 5 4 4 3 3 2 2
出力例3
8
8

Submitted solutions:

code_snippet: #include <iostream>
#include <vector>
#include <limits>
#include <string>
#include <algorithm>
#include <cmath>
#include <iomanip>
#include <numeric>
#include <stack>
#include <queue>
#include <list>
#include <set>
#include <unordered_set>
#include <tuple>
#include <map>
#include <bitset>

using namespace std;

int main()
{
	int N;
	cin >> N;

	vector<int> A(N);

	int minNumOfEntries = 0;
	int maxNumOfEntries = N;

	for (int i = 0; i < N; i++)
	{
		cin >> A[i];

		if (i != 0)
		{
			if (A[i] <= A[i - 1])
			{
				minNumOfEntries++;
			}
		}
		else
		{
			minNumOfEntries++;
		}
	}

	cout << minNumOfEntries << endl;
	cout << maxNumOfEntries << endl;

	return 0;
}
accuracy: 1
time_ms: 20
memory_kb: 3620
final_rank: 14

code_snippet: #include<bits//stdc++.h>
using namespace std;
#define rep(i,n) for(int i = 0;i<n;i++)
int main(){
    int n,sum=0;cin >>n;vector<int> a(n);
    rep(i,n){
        cin >> a[i];
        if(i!=0) {
            if(a[i] <=a[i-1]) sum++;
        }
    }cout << sum+1 << endl << n << endl;
}
accuracy: 1
time_ms: 20
memory_kb: 3124
final_rank: 9

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

int main(){
    int n;
    cin >> n;
    vector<int> a(n);
    for(int i=0; i<n; i++){
        cin >> a[i];
    }
    int ans = 1;
    for(int i=0; i<n-1; i++){
        if(a[i+1] <= a[i]) ans++;
    }
    cout << ans << endl;
    cout << n << endl;
    return 0;
}
accuracy: 1
time_ms: 20
memory_kb: 3120
final_rank: 8

code_snippet: #include<bits/stdc++.h>
using namespace std;
signed main(){
    int n;
    cin>>n;
    vector<int> a(n);
    for(auto& ai:a)cin>>ai;
    int ans = 1;
    for(int i=0;i<n-1;++i){
        if(a[i]>=a[i+1])ans++;
    }
    cout<< ans <<endl;
    cout<< n <<endl;
}
accuracy: 1
time_ms: 20
memory_kb: 3108
final_rank: 5

code_snippet: #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <functional>
#include <algorithm>
#include <vector>
#include <string>
#include <queue>
#include <stack>
#include <map>
#include <set>
using namespace std;
typedef long long llong;

int main() {
    llong n;
    llong a[100005];

    cin >> n;
    llong minv = 1;
    llong maxv = n;
    for (int i = 0; i < n; i++) {
        cin >> a[i];
        if (i && a[i] <= a[i - 1]) minv++;
    }

    cout << minv << endl;
    cout << maxv << endl;

    return 0;
}
accuracy: 1
time_ms: 20
memory_kb: 3880
final_rank: 17

code_snippet: #include<iostream>
using namespace std;

int main(){
    
    int n,a,b,ans;
    cin >> n >> b;
    ans = 1;
    for(int i=1;i<n;i++){
        cin >> a;
        if(a <= b) ans++;
        b = a;
    }
    cout << ans << endl << n << endl;
    
    return(0);
}
accuracy: 1
time_ms: 20
memory_kb: 3036
final_rank: 1

code_snippet: #include<bits/stdc++.h>
using namespace std;

int main() {

  int N;
  cin>>N;
  int a;
  int before, count = 0;
  for(int i = 0; i < N; i++) {
    cin>>a;
    if(before >= a && i != 0) count++;
    before = a;
  }
  count++;

  cout<<count<<endl<<N<<endl;
  return  0;
}
accuracy: 1
time_ms: 20
memory_kb: 3092
final_rank: 3

code_snippet: #include<bits/stdc++.h>
using namespace std;

#define M 100000
int main(){
  int n,a[M],i;
  int c=0;
  cin>>n;
  cin>>a[0];
  for(i=1;i<n;i++){
    cin>>a[i];
    if(a[i]<a[i-1])c++;
    if(a[i]==a[i-1])c++;
  }
  cout<<++c<<endl<<n<<endl;
  return 0;
}
accuracy: 1
time_ms: 20
memory_kb: 3504
final_rank: 12

code_snippet: #include <bits/stdc++.h>

using namespace std;

int main() {
	int n; cin >> n;
	vector<int> a(n);
	for(auto&e:a) cin >> e;
	int ma=1;
	for(int i=1;i<n;++i)
		if(a[i-1]>=a[i]) ++ma;
	cout << ma << endl;
	cout << n << endl;
	
	return 0;
}
accuracy: 1
time_ms: 20
memory_kb: 3152
final_rank: 11

code_snippet: #include<bits/stdc++.h>
using namespace std;

#define INF (1<<30)

int main(){
	int prev=INF,n,ans=0;	cin>>n;

	for(int i=0;i<n;i++){
		int x;	cin>>x;
		if(prev>=x)ans++;

		prev=x;
	}
	cout<<ans<<endl;
	cout<<n<<endl;

	return 0;
}
accuracy: 1
time_ms: 20
memory_kb: 3116
final_rank: 6

code_snippet: #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
//#include <boost/multiprecision/cpp_int.hpp>
//typedef boost::multiprecision::cpp_int ll;
typedef long double dd;
#define i_7 (ll)(1E9+7)
//#define i_7 998244353
#define i_5 i_7-2
ll mod(ll a){
    ll c=a%i_7;
    if(c>=0)return c;
    return c+i_7;
}
typedef pair<ll,ll> l_l;
ll inf=(ll)1E16;
#define rep(i,l,r) for(ll i=l;i<=r;i++)
#define pb push_back
ll max(ll a,ll b){if(a<b)return b;else return a;}
ll min(ll a,ll b){if(a>b)return b;else return a;}
void Max(ll &pos,ll val){pos=max(pos,val);}//Max(dp[n],dp[n-1]);
void Min(ll &pos,ll val){pos=min(pos,val);}
void Add(ll &pos,ll val){pos=mod(pos+val);}
dd EPS=1E-9;
#define fastio ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
////////////////////////////

int main(){
    ll n;cin>>n;
    ll ans=1;
    ll a[n];
    rep(i,0,n-1){
        cin>>a[i];
    }
    rep(i,1,n-1){
        if(a[i]<=a[i-1]){
            ans++;
        }
    }
    cout<<ans<<endl<<n<<endl;
    
    
    
    return 0;
}
accuracy: 1
time_ms: 20
memory_kb: 3884
final_rank: 19

code_snippet: #include <iostream>
#include <vector>
#include <array>
#include <list>
#include <string>
#include <stack>
#include <queue>
#include <deque>
#include <unordered_map>
#include <unordered_set>
#include <tuple>
#include <memory>
#include <cmath>
#include <algorithm>
#include <functional>
#include <iomanip>
#include <numeric>
#include <climits>
#include <cfloat>
#include <cassert>
#include <random>


int main() {
	int n; std::cin >> n;
	int prev = INT_MAX;
	int count = 0;
	for (auto i = 0; i < n; ++i) {
		int a; std::cin >> a;
		if (prev >= a) {
			++count;
		}
		prev = a;
	}
	std::cout << count << '\n' << n << std::endl;
}
accuracy: 1
time_ms: 30
memory_kb: 3116
final_rank: 20

code_snippet: //
// Created by yamunaku on 2019/12/29.
//

#include <bits/stdc++.h>

using namespace std;

#define rep(i, n) for(int i = 0; i < (n); i++)
#define repl(i, l, r) for(int i = (l); i < (r); i++)
#define per(i, n) for(int i = ((n)-1); i >= 0; i--)
#define perl(i, l, r) for(int i = ((r)-1); i >= (l); i--)
#define all(x) (x).begin(),(x).end()
#define MOD9 998244353
#define MOD1 1000000007
#define IINF 1000000000
#define LINF 1000000000000000000
#define SP <<" "<<
#define CYES cout<<"Yes"<<endl
#define CNO cout<<"No"<<endl
#define CFS cin.tie(0);ios::sync_with_stdio(false)
#define CST(x) cout<<fixed<<setprecision(x)

using ll = long long;
using ld = long double;
using vi = vector<int>;
using mti = vector<vector<int>>;
using vl = vector<ll>;
using mtl = vector<vector<ll>>;
using pi = pair<int, int>;
using pl = pair<ll, ll>;
template<typename T>
using heap = priority_queue<T, vector<T>, function<bool(const T, const T)>>;

int main(){
    // CFS;
    int n;
    cin >> n;
    vi a(n);
    rep(i, n) cin >> a[i];
    int ans = 1;
    repl(i,1,n){
        if(a[i-1]>=a[i]) ans++;
    }
    cout << ans << endl;
    cout << n << endl;
    return 0;
}
accuracy: 1
time_ms: 20
memory_kb: 3088
final_rank: 2

code_snippet: #include <bits/stdc++.h>
using namespace std;

int main(){
    int N;
    cin >> N;
    vector<int> A(N);
    for(int i=0; i<N; i++) cin >> A[i];
    int ans = 1;
    for(int i=1; i<N; i++) if(A[i-1] >= A[i]) ans++;
    cout << ans << endl << N << endl;
    return 0;
}
accuracy: 1
time_ms: 20
memory_kb: 3116
final_rank: 6

code_snippet: #include <iostream>
#include <fstream>
#include <vector>
#include <cstring>
#include <math.h>
#include <algorithm>
#include <queue>
#include <bitset>
#include <set>

#define REP(i, n) for (long long i = 0; i < (n); i++) 
typedef long long ll;
static const ll INF = 1000000000000000000LL;
using namespace std;

const int MOD = 1000000007;

int main(){
    ll N;
    cin >> N;
    vector <ll> a(N);
    REP(i,N)
    {
        cin >> a[i];
    }

    int now = a[0];
    int res = 1;
    for(int i = 1; i < N; ++i)
    {
        if(now >= a[i])++res;

        now = a[i];
    }
    cout << res << endl;
    cout << N << endl;


    return 0;
}
accuracy: 1
time_ms: 20
memory_kb: 3620
final_rank: 14

code_snippet: #include<iostream>
using namespace std;
int n,c,p,a;
main()
{
    cin>>n;
    p=2e9;
    for(int i=0;i<n;i++)cin>>a,c+=p>=a,p=a;
    cout<<c<<endl<<n<<endl;
}
accuracy: 1
time_ms: 20
memory_kb: 3100
final_rank: 4

code_snippet: #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i, a, b) for(int i = a; i < b; i++)

int main(){
    ll N; cin >> N;
    vector<ll> A(N);
    rep(i, 0, N) cin >> A[i];

    ll cnt = 0;
    rep(i, 1, N) if(A[i-1] >= A[i]) cnt++;
    cout << 1 + cnt << endl;
    cout << N << endl;
}
accuracy: 1
time_ms: 20
memory_kb: 3608
final_rank: 13

code_snippet: #include <iostream>
#include <vector>
#include <algorithm>
#include <math.h>
#include <queue>
#include <map>
#include <iomanip>
using namespace std;
typedef long long ll;

int main() {
    ll n, v[100010];
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> v[i];
    }
    int mn = 1;
    for (int i = 0; i < n - 1; i++) {
        mn += (v[i] >= v[i + 1]);
    }
    cout << mn << endl << n << endl;

}
accuracy: 1
time_ms: 20
memory_kb: 3880
final_rank: 17

code_snippet: #include "bits/stdc++.h"
using namespace std;
int main() {
	long long N;
	cin >> N;
	vector<long long>A(N);
	for (long long i = 0; i < N; i++) {
		cin >> A.at(i);
	}
	long long MIN = 1, MAX = N;
	for (long long i = 1; i < N; i++) {
		if (A.at(i - 1) >= A.at(i)) MIN++;
	}
	cout << MIN << endl << MAX << endl;
}
accuracy: 1
time_ms: 20
memory_kb: 3620
final_rank: 14

code_snippet: #include <bits/stdc++.h>

using namespace std;

#define ll long long
#define ld long double

signed main() {
	int n; cin >> n;
	vector<int> a(n);
	for (int i = 0; i < n; ++i) cin >> a[i];
	// 最小値の計算
	int min = 1;
	for (int i = 0; i < n - 1; ++i)
		if (a[i] >= a[i + 1])
			++min;
	// 答えの出力
	cout << min << endl << n << endl;
	return 0;
}
accuracy: 1
time_ms: 20
memory_kb: 3128
final_rank: 10