Pagini recente » Cod sursa (job #2159260) | Cod sursa (job #801156) | Cod sursa (job #2849730)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f ("copaci.in");
ofstream g ("copaci.out");
int n;
struct pct
{
int x,y;
} puncte[1000001];
void citire()
{
f >> n;
for(int i = 1; i<=n; i++)
f >>puncte[i].x >> puncte[i].y;
puncte[n+1] = puncte[1];
}
double calc_arie()
{
// calculam aria din determinant
double arie = 0.0;
for(int i = 1;i<=n;i++)
{
arie = arie + puncte[i].x * puncte[i+1].y - puncte[i].y*puncte[i+1].x;
}
arie = (arie*1.00)/2;
arie = abs(arie);
return arie;
}
int aflare_puncte_pe_contur_exterior()
{
int cnt = 0;
for(int i = 1;i<=n;i++)
{
cnt+=__gcd(abs(puncte[i].x-puncte[i+1].x),abs(puncte[i].y-puncte[i+1].y));
}
return cnt;
}
int main()
{
citire();
// formula lui pick
int puncte_int = calc_arie() - (aflare_puncte_pe_contur_exterior()*1.00)/2+1;
g << puncte_int<< endl;
}