我知道字符串会很简单。。emmm想练习一下高精度,发现样例一直跑不出来QAQ。主要问题还是我发现Bigint输入不进去。。可能我重载>>有问题,但是找不到错啊QAQ。
#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<stack>
#include<set>
using namespace std;
#define maxn 200
struct Bigint {
int len, a[maxn];
Bigint(int x = 0) {
memset(a, 0, sizeof(a));
for(len = 0; x; len++) { //len
a[len] = x % 10, x /= 10;
}
}
int& operator [](int i) {
return a[i];
}
void flatten(int L) {
len = L;//
for(int i = 0; i < len; i++) {
a[i+1] += a[i] / 10, a[i] %= 10;
}
for(; !a[len];) len--;
}
void print(void) {
for(int i = max(0, len); i >= 0; i--)
printf("%d", a[i]);
}
};
istream& operator >>(istream& in, Bigint a) {
string str;
in >> str;
int len = str.length();
for(int i = 0; i < len; i++) a[len-i-1] = str[i] - '0';
return in;
}
ostream& operator <<(ostream& out, Bigint a) {
a.flatten(a.len);
for(int i = a.len; i; i--) out << a[i];
return out;
}
bool operator > (Bigint a, Bigint b) {
if(a.len == b.len) {
for(int len = a.len; len >= 0; len--)
if(a[len] != b[len]) return a[len] > b[len];
return false;
} else return a.len > b.len;
}
struct Node {
int id;
Bigint t;
} node[25];
bool cmp(Node p, Node q) {
return p.t > q.t;
}
int n;
int main() {
cin >> n;
for(int i = 0; i < n; i++) {
node[i].id = i;
cin >> node[i].t;
}
sort(node, node+n, cmp);
cout << node[0].id+1 << endl << node[0].t;
return 0;
}