Cod sursa(job #872553)

Utilizator DEYDEY2Tudorica Andrei DEYDEY2 Data 6 februarie 2013 11:25:07
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("trapez.in");
ofstream g("trapez.out");
int n,i,j,a[1001],b[1001],m,rez,aaa,bbb;
typedef struct cod {int x,y,rest,cat;};
cod pante[1000001];
int cmp(cod aa,cod bb)
{
	if(aa.cat>bb.cat) return 1;
	if(aa.cat==bb.cat && aa.rest>bb.rest) return 1;
	return 0;
}

int main()
{
	f>>n;
	f>>a[1]>>b[1];
	for(i=2;i<=n;i++)
	{
        f>>aaa>>bbb;
        j=i;
        if(a[j-1]>aaa)
        {
            while(j!=1 && a[j-1]>aaa)
            {
                a[j]=a[j-1];
                b[j]=b[j-1];
                j--;
            }
        }
        a[j]=aaa;
        b[j]=bbb;
	}
	//for(i=1;i<=n;i++) g<<a[i]<<' '<<b[i]<<'\n';
	for(i=1;i<n;i++)
		for(j=i+1;j<=n;j++)
		{
			if(a[i]!=a[j])
			{
				m++;

				pante[m].cat=(b[j]-b[i]);
				pante[m].rest=(a[j]-a[i]);
				pante[m].x=i;
				pante[m].y=j;
			}

			else{m++; pante[m].cat=0; pante[m].rest=0; pante[m].x=i;
				pante[m].y=j;}
		}
		sort(pante+1,pante+m+1,cmp);
	for(i=1;i<=m;i++) g<<pante[i].x<<' '<<pante[i].y<<' '<<pante[i].cat<<' '<<pante[i].rest<<'\n';
	for(i=1;i<m;i++)
        for(j=i+1;j<=m;j++)
		if(pante[i].rest-pante[j].rest==pante[i].cat-pante[j].cat
     && pante[i].x!=pante[j].x && pante[i].y!=pante[j].y) rez++;
	g<<rez<<'\n';
	f.close();
	g.close();
	return 0;
}