Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- long long powww(int a){
- int ans=1;
- for(int i=0;i<a;i++){
- ans*=10;
- }
- return ans;
- }
- bool compare(string s1,string s2){
- if(s1==s2){
- return false;
- }
- ///cout<<s1<<" "<<s2<<"\n";
- if(s1[0]=='.')s1="0"+s1;
- if(s2[0]=='.')s2="0"+s2;
- ///Перевод первой строки если она подана не десяитичным вариантом и первый элемент дробный
- if(s1.find('E')!=string::npos){
- string str_integer_before_e="";
- int integer_before_e=0;
- string str_amount_after_dot="";
- int amount_after_dot=0;
- int start;
- int m;
- if(s1[0]=='-')m=-1; else m=1;
- while(s1[0]=='0')s1.erase(0,1);
- if(s1[s1.find('E')+1]!='-' && s1[s1.find('E')+1]!='+' )
- start=s1.find('E')+1; else start=s1.find('E')+2;
- for(int i=start;i<s1.size();i++){
- str_amount_after_dot+=s1[i];
- }
- for(int i=0;i<s1.find('E');i++){
- if(s1[i]!='.' && s1[i]!='-')str_integer_before_e+=s1[i];
- }
- for(int i=0;i<str_amount_after_dot.size();i++){
- amount_after_dot*=10;
- amount_after_dot+=str_amount_after_dot[i]-48;
- }
- int something=0;
- if(s1.find('.')!=string::npos){
- something=s1.find('E')-s1.find('.')-1;
- }
- if(s1[s1.find('E')+1]=='-'){
- int counter=something+amount_after_dot;
- if(counter>=str_integer_before_e.size()){
- string new_string="";
- if(m==1)new_string="0."; else new_string="-0.";
- for(int i=0;i<counter-str_integer_before_e.size();i++)new_string+="0";
- new_string+=str_integer_before_e;
- s1=new_string;
- } else {
- string new_string="";
- if(m==-1)new_string+="-";
- for(int i=0;i<str_integer_before_e.size();i++){
- if(i==str_integer_before_e.size()-counter)new_string+=".";
- new_string+=str_integer_before_e[i];
- }
- s1=new_string;
- }
- } else {
- int counter=amount_after_dot-something;
- string new_string="";
- if(m==-1)new_string="-";
- if(counter>=0){
- new_string+=str_integer_before_e;
- for(int i=0;i<counter;i++)new_string+="0";
- s1=new_string;
- } else {
- counter=abs(counter);
- for(int i=0;i<str_integer_before_e.size();i++){
- if(str_integer_before_e.size()-i==counter){
- new_string+=".";
- }
- new_string+=str_integer_before_e[i];
- }
- s1=new_string;
- }
- }
- }
- if(s2.find('E')!=string::npos){
- string str_integer_before_e="";
- int integer_before_e=0;
- string str_amount_after_dot="";
- int amount_after_dot=0;
- int start;
- int m;
- if(s2[0]=='-')m=-1; else m=1;
- while(s2[0]=='0')s2.erase(0,1);
- if(s2[s2.find('E')+1]!='-' && s2[s2.find('E')+1]!='+' )
- start=s2.find('E')+1; else start=s2.find('E')+2;
- for(int i=start;i<s2.size();i++){
- str_amount_after_dot+=s2[i];
- }
- for(int i=0;i<s2.find('E');i++){
- if(s2[i]!='.' && s2[i]!='-')str_integer_before_e+=s2[i];
- }
- for(int i=0;i<str_amount_after_dot.size();i++){
- amount_after_dot*=10;
- amount_after_dot+=str_amount_after_dot[i]-48;
- }
- int something=0;
- if(s2.find('.')!=string::npos){
- something=s2.find('E')-s2.find('.')-1;
- }
- if(s2[s2.find('E')+1]=='-'){
- int counter=something+amount_after_dot;
- if(counter>=str_integer_before_e.size()){
- string new_string="";
- if(m==1)new_string="0."; else new_string="-0.";
- for(int i=0;i<counter-str_integer_before_e.size();i++)new_string+="0";
- new_string+=str_integer_before_e;
- s2=new_string;
- } else {
- string new_string="";
- if(m==-1)new_string+="-";
- for(int i=0;i<str_integer_before_e.size();i++){
- if(i==str_integer_before_e.size()-counter)new_string+=".";
- new_string+=str_integer_before_e[i];
- }
- s2=new_string;
- }
- } else {
- int counter=amount_after_dot-something;
- string new_string="";
- if(m==-1)new_string="-";
- if(counter>=0){
- new_string+=str_integer_before_e;
- for(int i=0;i<counter;i++)new_string+="0";
- s2=new_string;
- } else {
- counter=abs(counter);
- for(int i=0;i<str_integer_before_e.size();i++){
- if(str_integer_before_e.size()-i==counter){
- new_string+=".";
- }
- new_string+=str_integer_before_e[i];
- }
- s2=new_string;
- }
- }
- }
- ///cout<<s1<<" "<<s2<<"\n";
- ///Сравнение отрицательных с положительными (1-отрицательное, 2-положительное)
- if(s1[0]=='-' && s2[0]!='-'){
- return false;
- }
- ///Сравнение отрицательных с положительными (1-положительное, 2-отрицательное)
- if(s1[0]!='-' && s2[0]=='-'){
- return true;
- }
- ///Сравнение отрицательных рациональных с одинаковой позицией точки
- if(s1[0]=='-' && s2[0]=='-' && s1.find('.')!=string::npos && s2.find('.')!=string::npos && s1.find('.')==s2.find('.')){
- for(int i=1;i<min(s1.size(),s2.size());i++){
- if(s1[i]>s2[i])return false; else if(s1[i]<s2[i])return true;
- }
- if(s1.size()<s2.size()){
- for(int i=s1.size();i<s2.size();i++){
- if(s2[i]!='0')return true;
- }
- } else return false;
- }
- ///Сравнение отрицательных рациональных с разной позицией точки
- if(s1[0]=='-' && s2[0]=='-' && s1.find('.')!=string::npos && s2.find('.')!=string::npos){
- if(s1.find('.')<s2.find('.'))return true; else return false;
- }
- ///Сравнение отрицательных целых
- if(s1[0]=='-' && s2[0]=='-' && s1.find('.')==string::npos && s2.find('.')==string::npos){
- if(s1.size()>s2.size())return false; else if(s1.size()<s2.size())return true;
- for(int i=1;i<s1.size();i++){
- if(s1[i]<s2[i])return true; else if(s1[i]>s2[i])return false;
- }
- }
- ///Сравнение положительных рациональных с одинаковой позицией точки
- if(s1[0]!='-' && s2[0]!='-' && s1.find('.')!=string::npos && s2.find('.')!=string::npos && s1.find('.')==s2.find('.')){
- for(int i=0;i<min(s1.size(),s2.size());i++){
- if(s1[i]>s2[i])return true; else if(s1[i]<s2[i])return false;
- }
- if(s2.size()<s1.size()){
- for(int i=s2.size();i<s1.size();i++){
- if(s1[i]!='0')return true;
- }
- }
- }
- ///Сравнение положительных рациональных с разной позицией точки
- if(s1[0]!='-' && s2[0]!='-' && s1.find('.')!=string::npos && s2.find('.')!=string::npos && s1.find('.')!=s2.find('.')){
- if(s1.find('.')>s2.find('.'))return true; else return false;
- }
- ///Сравнение положительных целых
- if(s1[0]!='-' && s2[0]!='-' && s1.find('.')==string::npos && s2.find('.')==string::npos){
- if(s1.size()>s2.size())return true; else if(s1.size()<s2.size())return false;
- for(int i=0;i<s1.size();i++){
- if(s1[i]>s2[i])return true; else if(s1[i]<s2[i])return false;
- }
- }
- ///Сравнение положительных целых и рациональных (1-целое, 2-рациональное)
- if(s1[0]!='-' && s2[0]!='-' && s1.find('.')==string::npos && s2.find('.')!=string::npos){
- if(s1.size()<s2.find('.'))return false; else if(s1.size()>s2.find('.'))return true;
- for(int i=0;i<s1.size();i++){
- if(s1[i]>s2[i])return true; else if(s1[i]<s2[i])return false;
- }
- return false;
- }
- ///Сравнение положительных целых и рациональных (1-рациональное, 2-целое)
- if(s1[0]!='-' && s2[0]!='-' && s1.find('.')!=string::npos && s2.find('.')==string::npos){
- if(s1.find('.')>s2.size())return true; else if(s1.find('.')<s2.size())return false;
- for(int i=0;i<s2.size();i++){
- if(s1[i]>s2[i])return true; else if(s1[i]<s2[i])return false;
- }
- for(int i=s1.find('.')+1;i<s1.size();i++){
- if(s1[i]!='0')return true;
- }
- return false;
- }
- ///Сравнение отрицательных целых и рациональных (1-целое,2-рациональное)
- if(s1[0]=='-' && s2[0]=='-' && s1.find('.')==string::npos && s2.find('.')!=string::npos){
- if(s2.find('.')<s1.size())return false; else if(s2.find('.')>s1.size())return true;
- for(int i=0;i<s1.size();i++){
- if(s1[i]<s2[i])return true; else if(s2[i]<s1[i])return false;
- }
- for(int i=s2.find('.');i<s2.size();i++){
- if(s2[i]!='0')return true;
- }
- return false;
- }
- ///Сравнение отрицательных целых и рациональных (1-рациональное,2-целое)
- if(s1[0]=='-' && s2[0]=='-' && s1.find('.')!=string::npos && s2.find('.')==string::npos){
- if(s1.find('.')<s2.size())return true; else if(s1.find('.')>s2.size())return false;
- for(int i=0;i<s2.size();i++){
- if(s1[i]<s2[i])return true; else if(s2[i]<s1[i])return false;
- }
- return false;
- }
- return false;
- }
- int main(){
- freopen("input.txt","r",stdin);
- freopen("output.txt","w",stdout);
- string s;
- double sum=0,k=0,m=1,j=1,i=0,ans=-1,ansn=0;
- string max1="-2000000001";
- string ansstr="";
- string s1="";
- while(getline(cin,s)){
- i=0;
- ///cout<<i<<"\n";
- while(i<s.size()){
- if(s[i]=='+' || s[i]!='e' && s[i]!='.' && s[i]!='-' && (s[i]<'0' || s[i]>'9') && i<s.size()){
- i++;
- } else {
- m=1;
- k=0;
- bool dot=0;
- s1="";
- int counter=0,countern=0;
- while(i<s.size() && ((s[i]>='0' && s[i]<='9' )) || s[i]=='-' || s[i]=='.' || s[i]=='e' || s[i]=='+'){
- if(s[i]=='-'){/*cout<<"l"<<"\n"*/m=-1;s1+=s[i];i++;continue;}
- if(s[i]=='.'){dot=1;i++;s1+=".";continue;}
- if(dot){
- counter++;
- if((double)((int)s[i]-48)==0)countern++; else countern=0;
- k+=(double)((int)s[i]-48)/powww(counter);
- s1+=s[i];
- } else {
- k*=10;
- k+=(int)s[i]-48;
- s1+=s[i];
- }
- /// cout<<k<<"\n";
- i++;
- //cout<<i<<"\n";
- }
- ///cout<<max1<<" "<<k<<"\n";
- ///cout<<m<<"\n";
- if(compare(s1,max1)){
- max1=s1;
- ans=j;
- ansn=countern;
- ansstr=s1;
- }
- k=0;
- ///cout<<"\n";
- }
- }
- j++;
- }
- if(ans!=-1){
- cout<<ans<<" ";
- cout<<max1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement