Cod sursa(job #2071062)

Utilizator RaduXD1Nicolae Radu RaduXD1 Data 20 noiembrie 2017 10:22:56
Problema Zone Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.84 kb
#include <fstream>

using namespace std;
ifstream fin ("date.in");
ofstream fout("date.out");
int n, s[11], i, j, v[100][100],c1,l1,l2,c2,k1,k2,k3,st,dr,mid;

int main ()
{
    fin>>n;
    for(i=1;i<=9;i++)
        fin>>s[i];
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
        {
            fin>>v[i][j];
            v[i][j]+=v[i][j-1]+v[i-1][j]-v[i-1][j-1];
        }
    for(k1=1;k1<=9;k1++)
        for(k2=1;k2<=9;k2++)
            if(k2!=k1)
                for(k3=1;k3<=9;k3++)
                    if(k3!=k2&&k3!=k1)
                        for(l1=1;l1<n-1;l1++)
                        {
                            l1=-1;l2=-1;c1=-1;c2=-1;
                            st=1;
                            dr=n-2;
                            while(st<=dr)
                            {
                                mid=(st+dr)/2;
                                if(v[l1][mid]==k1)
                                {
                                    c1=mid;
                                    break;
                                }
                                else
                                    if(v[l1][mid]<k1)
                                        st=mid+1;
                                    else
                                        dr=mid-1;
                            }
                            st=c1+1;
                            dr=n-1;
                            while(st<=dr)
                            {
                                mid=(st+dr)/2;
                                if(v[l1][mid]-v[l1][c1]==k2)
                                {
                                    c2=mid;
                                    break;
                                }
                                else
                                    if(v[l1][mid]<k2)
                                        st=mid+1;
                                    else
                                        dr=mid-1;
                            }
                            st=l1+1;
                            dr=n-1;
                            while(st<=dr)
                            {
                                mid=(st+dr)/2;
                                if(v[mid][c1]-v[l1][c1]==k3)
                                {
                                    l2=mid;
                                    break;
                                }
                                else
                                    if(v[l1][mid]<k3)
                                        st=mid+1;
                                    else
                                        dr=mid-1;
                            }
                            if(l1!=-1&&l2!=-1&&c1!=-1&&c2!=-1)
                                fout<<l1<<" "<<l2<<" "<<c1<<" "<<c2<<"\n";
                        }
    return 0;
}