Untitled
raw download clone
TEXT
views 17
,
size 8313 b
//ĐỀ THI THỬ SỐ 1:

// Bài 1:

float getDistance(Diem d1, Diem d2) {
        return sqrt(pow(d1.x - d2.x, 2) + pow(d1.y - d2.y, 2));
    }

class DaGiac
{
    int n;
    Diem *d;
    public:
    DaGiac(vector<Diem> dg) {
        n = dg.size();
        d = new Diem[n + 1];
        for(int i = 0; i < n; i++) {
            d[i] = dg[i];
        }
    }
    float tinhChuVi() {
        float perimeter = 0;
        for (int i = 0; i < n - 1; i++) {
            perimeter += getDistance(d[i], d[i+1]);
        }
        perimeter += getDistance(d[0], d[n - 1]);
        return perimeter;
    }
};

void BaiTrinhChieu::chenTrangTrong()
{
	TrangTrinhChieu *a = new TrangTrinhChieu;
	a->tiep = NULL;
	a->noiDung = ' ';
	
	if (trangDau->noiDung == "Tieu de") {
	    a->tiep = trangDau;
	    trangDau = a;
	} else {
	    TrangTrinhChieu *temp = trangDau;
	    while (temp->tiep->noiDung != "Tieu de") {
            temp = temp->tiep;
        }
        a->tiep = temp->tiep;
        temp->tiep = a;
	}
}

void BaiTrinhChieu::chenTrangTrong()
{
	TrangTrinhChieu *a = new TrangTrinhChieu;
	a->tiep = NULL;
	a->noiDung = ' ';
	
	if (trangDau->noiDung == "Tieu de") {
	    a->tiep = trangDau;
	    trangDau = a;
	} else {
	    TrangTrinhChieu *temp = trangDau;
	    while (temp->tiep != NULL) {
	        if (temp->noiDung == "Tieu de") break;
	        temp = temp->tiep;
        }
        a->tiep = temp->tiep;
        temp->tiep = a;
	}
}


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////




bool check(string s) {
    for (int i = 0; i < s.length(); i++)
		if (s[i] == '{') return true;
	return false;
}

int strtonum(string &s) {
    int sum = 0, m = 1;
    for (int i = s.length() - 1; i >= 0; i--) {
        sum = sum + (s[i] - 48)*m;
        m = m*10;
    }
    return sum;
}

string getString(string s) {
    string str;
	int end = -1;
	for (int i = 0; i < s.length(); i++) {
		if (s[i] == '{') end = i;
	}
	
	for (int i = 0; i < end; i++) {
	    str += s[i];
	}
	return str;
}

string getPolynomial(string s) {
    string polynomial;
    int start = -1;
	int end = -1;
	for (int i = 0; i < s.length(); i++) {
		if (s[i] == '{') start = i;
		if (s[i] == '}') end = i;
	}	
	
	for (int i = start + 1; i < end; i++) {
	    polynomial += s[i];
	}
	return polynomial;
}

int getPosOperator(string &s) {
    for (int i = 0; i < s.length(); i++) {
        if ((s[i] == '+')) return i;
        if ((s[i] == '-')) return i;
        if ((s[i] == '*')) return i;
    }
}

int checkOperator(string s) {
    for (int i = 0; i < s.length(); i++) {
        if (s[i] == '+') return 1;
        if (s[i] == '-') return 2;
        if (s[i] == '*') return 3;
    }
}

string tinhXau(string str) {
    string s = getString(str);
    if (check(str) == false) return str;
    else {
        string polynomial = getPolynomial(str);
        int pos = getPosOperator(polynomial);
        string left, right;
        for (int i = 0; i < pos; i++) left += polynomial[i];
        for (int i = pos + 1; i < polynomial.length(); i++) right += polynomial[i];
        if (checkOperator(polynomial) == 1) {
            int plus = strtonum(left) + strtonum(right);
            s = s + to_string(plus) + ".";
        }
        
        if (checkOperator(polynomial) == 2) {
            int subtract = strtonum(left) - strtonum(right);
            s = s + to_string(subtract) + ".";
        }
        
        if (checkOperator(polynomial) == 3) {
            int product = strtonum(left) * strtonum(right);
            s = s + to_string(product) + ".";
        }
        return s;
    }
}


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


#include <iostream>
#include <cmath>
using namespace std;

double posmin(double a[], int n) {
    double min = a[0];
    int pos = -1;
    for (int i = 1; i < n; i++)
        if (min > a[i]) {
            min = a[i];
            pos = i;
        }
    return pos;
}

double trungbinh(double a[], int n) {
    double sum = 0;
    for (int i = 0; i < n; i++)
        sum += a[i];
    return sum/n;
}

int main() {
    double a[100];
    int n;
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    
    double trb[100];
    for (int i = 0; i < n; i++) {
        trb[i] = abs(a[i] - trungbinh(a, n));
    }
    int pos = posmin(trb, n);
    cout << a[pos];
}


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



TrangTrinhChieu* deleteNode(TrangTrinhChieu* trangDau, int index){
    if (index == 0) {
        TrangTrinhChieu* p = trangDau;
        trangDau = trangDau->tiep;
        delete p;
        return trangDau;
    }
    trangDau->tiep = deleteNode(trangDau->tiep, index - 1);
    return trangDau;
}

void BaiTrinhChieu::xoaLienTiep(int start, int end)
{
    for (int i = start; i <= end; i++) {
        deleteNode(trangDau, i);
    }
}




////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



#include <iostream>
using namespace std;
int main() {
    int n;
    cin >> n;
    int arr[100][100];
    bool visited[100][100];
    for (int  i = 0 ; i < n ; i ++) {
        for (int j = 0 ; j < n ; j ++) {
            cin >> arr[i][j];
            visited[i][j] = false;
        }
    }
    int max = 0, count = 0, sum = 0;
    int xMove[8] = {0,1,1,0,-1,-1,1,-1};
    int yMove[8] = {-1,1,0,1,1,-1,-1,0};
    int xPos = 0, yPos = 0;
    while (xPos <= n - 1 && yPos <= n - 1) {
        sum = arr[yPos][xPos];
        int maxInNeb = 0;
        for (int move = 0 ; move < 8 ; move ++) {
            yPos +=  yMove[move];
            xPos += xMove[move];
            if (xPos >= 0 && xPos <= n - 1 && yPos >= 0 && yPos <= n - 1  ) {
                sum += arr[yPos][xPos];
                if (sum > maxInNeb) {
                    maxInNeb = sum;
                }
                sum -= arr[yPos][xPos];
                
            }
            yPos -=  yMove[move];
            xPos -= xMove[move];
        }
        if (maxInNeb > max) {
            
            max = maxInNeb;
        }
        xPos++;
        if (xPos == n  && yPos != n - 1) {
            xPos = 0;
            yPos++;
        }
    }
    yPos = 0;
    xPos = 0;
    while (xPos <= n - 1 && yPos <= n - 1) {
        sum = arr[yPos][xPos];
        int maxInNeb = 0;
        for (int move = 0 ; move < 8 ; move ++) {
            yPos +=  yMove[move];
            xPos += xMove[move];
            if (xPos >= 0 && xPos <= n - 1 && yPos >= 0 && yPos <= n - 1  ) {
                sum += arr[yPos][xPos];
                if (sum == max) {
                    count++;
                }
                sum -= arr[yPos][xPos];
                
            }
            yPos -=  yMove[move];
            xPos -= xMove[move];
        }
        xPos++;
        if (xPos == n  && yPos != n - 1) {
            xPos = 0;
            yPos++;
        }
    }

    cout << max << " " << count/2;
}
close fullscreen
Login or Register to edit or fork this paste. It's free.