Cod sursa(job #2950747)

Utilizator vlad_dimuVlad Dimulescu vlad_dimu Data 4 decembrie 2022 17:01:46
Problema A+B Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <fstream>
#define MAXN 100000
using namespace std;

struct punct{
  int x, y;
}puncte[MAXN];

struct seg{
  double a, b;
  bool vertical;
}segmente[MAXN];

int main(){
  int n, i, y_min, y_max, y_curent, lat_st, lat_dr;
  long long sum;
  fin >> n;
  y_max = 0;
  y_min = MAXN + 1;
  for( i = 0; i < n; i++ ){
    fin >> puncte[i].x >> puncte[i].y;
    y_min = min( y_min, puncte[i].y );
    y_max = max( y_max, puncte[i].y );
  }
  for( i = 0; i < n - 1; i++ ){
    if( puncte[i + 1].x != puncte[i].x ){
      segmente[i].a = (puncte[i + 1].y - puncte[i].y ) / ( puncte[i + 1].x - puncte[i].x );
      segmente[i].b = puncte[i].y - segmente[i].a * puncte[i].x;
    }
    else //dreapta verticala
      segmente[i].vertical = true;
  }
  if( puncte[0].x != puncte[n - 1].x ){
    segmente[n - 1].a = (puncte[0].y - puncte[n - 1].y ) / ( puncte[0].x - puncte[n - 1].x );
    segmente[n - 1].b = puncte[n - 1].y - segmente[n - 1].a * puncte[n - 1].x;
  }
  else
    segmente[n - 1].vertical = true;

  sum = 0;
  lat_dr = 0, lat_st = n - 1;
  for( y_curent = y_min; y_curent <= y_max; y_curent++ ){
    //actualizam laturile
    if( !(puncte[lat_dr].x <= y_curent && y_curent <= puncte[lat_dr] ))
    //y_Curent = a * x + b pt ambele laturi daca sunt
    //x urile dintre....
  }

}