Skip to content

Instantly share code, notes, and snippets.

@kdxu
Created July 11, 2014 10:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kdxu/1e225719f88035889f22 to your computer and use it in GitHub Desktop.
Save kdxu/1e225719f88035889f22 to your computer and use it in GitHub Desktop.
#include<iostream>
#include<sstream>
#include<string>
#include<cmath>
#include<cstdio>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<deque>
#include<algorithm>
#include<functional>
#include<numeric>
#define rep(i,b) for(int i=0;i<b;i++)
using namespace std;
int main(){
int cell[5][10];
int n;
while(cin>>n,n){
int score=0;
bool flag = false;
rep(i,n){
cin >> cell[0][i] >> cell[1][i] >> cell[2][i] >> cell[3][i] >> cell[4][i] ;
}
while(1){
//cout << "score:" << score << endl;
flag = false;
// 消す作業
rep(i,n){
rep(j,3){
if(cell[j][i]==cell[j+1][i] && cell[j+1][i] == cell[j+2][i] && cell[j][i]!=0){
int a = cell[j][i];
cell[j][i] = 0;
cell[j+1][i] = 0;
cell[j+2][i] = 0;
score=score+a*3;
flag = true;
if(j < 2 && cell[j + 3][i] == a){cell[j+3][i]=0; score+=a;}
if(j < 1 && cell[j + 4][i] == a){cell[j+4][i]=0; score+=a;}
}
}
}
//落とす作業
rep(i,5){
for(int j = n -1;j>=0;j--){
bool flag2 = false;
int k = 0;
while((cell[i][j-k]==0) && (j-k>= 0)) {
k++;
flag2 = true;
flag = true;
if(cell[i][j-k]!=0) break;
}
if(cell[i][j]==0){
cell[i][j] = cell[i][j-k];
cell[i][j-k] = 0;}
}
}
if(!flag) break;
}
cout << score << endl;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment