November 2020

First Dream Level

Solution

#include<bits/stdc++.h>
using namespace std;
int maxNumberOfPaints(int n, vector<vector<int>>& R) {
        map<int,vector<int>> M;
        for(int i=0;i<R.size();i++)
        {
           M[R[i][0]].push_back(R[i][1]);
        }
        int x=n-M.size();
        int ans=0;
        ans=x*2;
        for(auto it=M.begin();it!=M.end();it++)
        {
            vector<char> V(10,'E');
            for(int j=0;j<(it->second).size();j++)
            {
                V[((it->second)[j])-1]='B';
            }
            
            if(V[1]=='E' && V[2]=='E' && V[3]=='E' && V[4]=='E' &&V[5]=='E' && V[6]=='E' && V[7]=='E' && V[8]=='E')
            {
                ans=ans+2;
            }
            else
            {
                if(V[1]=='E' && V[2]=='E' && V[3]=='E' && V[4]=='E')
                    ans++;
                else if(V[3]=='E' && V[4]=='E' &&V[5]=='E' && V[6]=='E' )
                    ans++;
                else if(V[5]=='E' && V[6]=='E' && V[7]=='E' && V[8]=='E')
                    ans++;
            }
            
        }
    return ans;  
    }

int main() {
    long long int t,n,i,j,k,l,c[2],h,sum,m;
   cin>>t;
   while(t--)
   {
       cin>>n>>m;
       vector<vector<int> >a(m);
       for(i=0;i<m;i++)
       {
            cin>>k>>l;
            a[i].push_back(k);
            a[i].push_back(l);
       }
       cout<<maxNumberOfPaints(n,a)<<endl;  
   }
    return 0;
}